Próbuję użyć pakietu multiprocessing w python z puli.Python multiprocessing Pool with map_async
mam f funkcja, która jest wywoływana przez funkcję map_async:
from multiprocessing import Pool
def f(host, x):
print host
print x
hosts = ['1.1.1.1', '2.2.2.2']
pool = Pool(processes=5)
pool.map_async(f,hosts,"test")
pool.close()
pool.join()
Kod ten ma następny błąd:
Traceback (most recent call last):
File "pool-test.py", line 9, in <module>
pool.map_async(f,hosts,"test")
File "/usr/lib/python2.7/multiprocessing/pool.py", line 290, in map_async
result = MapResult(self._cache, chunksize, len(iterable), callback)
File "/usr/lib/python2.7/multiprocessing/pool.py", line 557, in __init__
self._number_left = length//chunksize + bool(length % chunksize)
TypeError: unsupported operand type(s) for //: 'int' and 'str'
nie wiem jak przekazać więcej niż 1 argumentu do funkcji f. Czy jest jakiś sposób?
Po prostu można użyć 'pool.map' i upuść "test"' 'zmienną zupełnie obojętne. – danodonovan