Python多处理池永远不会完成

斯梅纳里奇

我正在运行以下(示例)代码:

from multiprocessing import Pool

def f(x):
  return x*x

pool = Pool(processes=4)
print pool.map(f, range(10))

但是,代码永远不会完成。我究竟做错了什么?

线

pool = Pool(processes=4)

成功完成,它似乎在最后一行停止。即使按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()

关键的步骤是调用pool.close()pool.join()完成的过程后。否则,池不会释放。此外,您应该在主流程中通过将代码放入if __name__ == "__main__":

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章