wie benutze ich das Schlüsselwort-Argumente mit python-multiprocessing-pool apply_async
Ich versuche in den Griff zu bekommen mit Python multiprocessing-Modul, speziell die apply_async Methode der Pool
. Ich versuche, eine Funktion aufzurufen, die Argumente-und Schlüsselwort-Argumente. Wenn ich die Funktion aufrufen, ohne kwargs es ist in Ordnung, aber wenn ich versuche, fügen Sie ein Stichwort ein argument, das ich bekommen:
TypeError: apply_async() got an unexpected keyword argument 'arg2'
Unten ist der test-code, ich bin mit
#!/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()
Wie kann ich die Funktion aufrufen, so dass es nimmt Schlüsselwort-Argumente?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Übergeben Sie die keyword-Argumente in einem dictionary (und die positions-Argumente in einem Tupel):
Janne Antwort hat bei mir nicht funktioniert in python 2.7.11 (nicht sicher, warum).
Die Funktion test() erhalten Sie den Schlüssel (arg2), nicht den Wert (5).
Ich behoben, indem ein wrapper-test:
Dann ruft