我正在尝试实现多处理以加快复制循环,但无法使其在 Python27 中工作。这是我的程序的一个非常简化的版本,基于 SO 的文档和其他答案(例如Python multiprocessing pool.map for multiple arguments)。我意识到有很多关于多处理的问题,但到目前为止我还没有解决这个问题。希望我没有忽略任何太琐碎的事情。
代码
import itertools
from multiprocessing import Pool
def func(g, h, i):
return g + h + i
def helper(args):
args2 = args[0] + (args[1],)
return func(*args2)
pool = Pool(processes=4)
result = pool.map(helper, itertools.izip(itertools.repeat((2, 3)), range(20)))
print result
这在使用时有效map(...)
,但在使用时无效pool.map(...)
。
错误信息:
Process PoolWorker-3:
Traceback (most recent call last):
File "C:\Program_\EPD_python27\lib\multiprocessing\process.py", line 258, in _
bootstrap
self.run()
File "C:\Program_\EPD_python27\lib\multiprocessing\process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "C:\Program_\EPD_python27\lib\multiprocessing\pool.py", line 85, in worker
task = get()
File "C:\Program_\EPD_python27\lib\multiprocessing\queues.py", line 376, in get
return recv()
AttributeError: 'module' object has no attribute 'helper'