2012-09-18 26 views
6

私は複数の引数を取る関数を持っていますが、そのうちのいくつかはブール値です。私はこれをマルチプロセッシングpool.apply_asyncに渡そうとしていて、いくつかの引数に名前をつけて渡したいと思っています。ここでブール型引数と複数引数を持つPythonマルチプロセッシング

は、私が働いているスクリプトの例です:

from multiprocessing import Pool 

    def testFunc(y, x, calcY=True): 
     if calcY == True: 
      return y*y 
     elif calcY == False: 
      return x*x 

    if __name__ == "__main__": 
     p = Pool() 
     res = p.apply_async(testFunc, args = (2, 4, False)) 
     print res.get() 

これは動作しますが、私のようなものにres = p.apply_async(testFunc, args = (2, 4, False))の変更についての興味:

res = p.apply_async(testFunc, args = (2, 4, calcY = False)) 
+2

あなたはmap_async(testFunc、 'args =(2,4)、kwargs = dict(calcY = False))'を試してみましたか? –

+0

'map_async'は' args'と 'kwargs'のどちらのキーワードも取っていません。あなたのサンプルコードでTypeErrorが発生しているはずです。 – unutbu

+0

@unutbu申し訳ありませんが、それはapply_asyncだったはずです。これを反映するようにコードを編集しました。 – user1074057

答えて

8

apply_asyncargskwdsを持っていますキーワードの引数は次のように使用できます:

res = p.apply_async(testFunc, args=(2, 4), kwds={'calcY': False}) 
関連する問題