我正在运行以下(示例)代码:
from multiprocessing import Pool
def f(x):
return x*x
pool = Pool(processes=4)
print pool.map(f, range(10))
Run Code Online (Sandbox Code Playgroud)
但是,代码永远不会完成。我究竟做错了什么?
线
pool = Pool(processes=4)
Run Code Online (Sandbox Code Playgroud)
成功完成,它似乎停在最后一行。即使按 ctrl+c 也不会中断执行。我在 Spyder 的 ipython 控制台中运行代码。
from multiprocessing import Pool
def f(x):
return x * x
def main():
pool = Pool(processes=3) # set the processes max number 3
result = pool.map(f, range(10))
pool.close()
pool.join()
print(result)
print('end')
if __name__ == "__main__":
main()
Run Code Online (Sandbox Code Playgroud)
关键步骤是在进程完成后调用pool.close()和。pool.join()否则池不会被释放。此外,您应该通过将代码放入主进程中来创建池if __name__ == "__main__":
| 归档时间: |
|
| 查看次数: |
5386 次 |
| 最近记录: |