(这是使用Python 2.7)
我找到了类似的链接,但没有找到与我所拥有的完全相同的问题。 这个程序挂在map_async上,永远不会完成,我可以看到Python进程被创建但它永远不会完成:
import multiprocessing
def main():
PROCESSES = 4
print 'Creating pool with %d processes\n' % PROCESSES
pool = multiprocessing.Pool(PROCESSES)
r = pool.map_async(pow3, range(10))
r.wait()
def pow3(x):
try:
return x**3
except:
print('%s: %s' % (x, traceback.format_exc()))
if __name__ == '__main__':
main()
答案 0 :(得分:2)
工作正常 你是在交互式翻译中运行吗? 请参阅the docs中的此说明:
注意此程序包中的功能需要 main 模块可由孩子们输入。这在编程中有所涉及 然而,值得指出的是指导方针。这意味着一些 示例,例如multiprocessing.Pool示例将不起作用 互动口译员。例如:
>>> from multiprocessing import Pool
>>> p = Pool(5)
>>> def f(x):
... return x*x
>>> p.map(f, [1,2,3])
处理PoolWorker-1:
Process PoolWorker-2:
Process PoolWorker-3:
追踪(最近一次呼叫最后一次):
AttributeError:' module'对象没有属性&f;#39;
AttributeError:'模块'对象没有属性&f;#39;
AttributeError:'模块'对象没有属性' f'
(如果你尝试这个,它实际上会以半随机的方式输出三个完整的回溯,然后你可能不得不以某种方式停止主进程。)