我试图遵循一个非常简单的多处理示例:
import multiprocessing as mp
def cube(x):
return x**3
pool = mp.Pool(processes=2)
results = [pool.apply_async(cube, args=x) for x in range(1,7)]
Run Code Online (Sandbox Code Playgroud)
但是,在我的Windows机器上,我无法获得结果(在ubuntu 12.04LTS上运行完美).
如果我检查results,我看到以下内容:
[<multiprocessing.pool.ApplyResult object at 0x01FF0910>,
<multiprocessing.pool.ApplyResult object at 0x01FF0950>,
<multiprocessing.pool.ApplyResult object at 0x01FF0990>,
<multiprocessing.pool.ApplyResult object at 0x01FF09D0>,
<multiprocessing.pool.ApplyResult object at 0x01FF0A10>,
<multiprocessing.pool.ApplyResult object at 0x01FF0A50>]
Run Code Online (Sandbox Code Playgroud)
如果我跑,results[0].ready()我总是得到False.
如果我运行results[0].get()python解释器冻结,等待获得永远不会到来的结果.
这个例子很简单,所以我认为这是一个与操作系统相关的低级错误(我在Windows 7上).但也许别人有更好的主意?