20

私はpythonsマルチプロセッシングモジュール、特にのapply_asyncメソッドを理解しようとしていますPool。引数とキーワード引数を使用して関数を呼び出そうとしています。kwargsなしで関数を呼び出すと問題ありませんが、キーワード引数を追加しようとすると、次のようになります。 TypeError: apply_async() got an unexpected keyword argument 'arg2' 実行しているテストコードは次のとおりです。

#!/usr/bin/env python
import multiprocessing
from time import sleep
def test(arg1, arg2=1, arg3=2):
    sleep(5)

if __name__ == '__main__':
    pool = multiprocessing.Pool()
    for t in range(1000):
        pool.apply_async(test, t, arg2=5)
    pool.close()
    pool.join()

キーワード引数を受け入れるように関数を呼び出すにはどうすればよいですか?

4

3 に答える 3

26

キーワード args をディクショナリ (およびタプルの位置引数) に渡します。

pool.apply_async(test, (t,), dict(arg2=5))
于 2013-02-11T10:21:24.820 に答える