本文介绍了我们应该在什么时候调用多进程.Pool.Join?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用‘Multicess.Pool.imap_unorded’,如下所示
from multiprocessing import Pool
pool = Pool()
for mapped_result in pool.imap_unordered(mapping_func, args_iter):
do some additional processing on mapped_result
是否需要在for循环之后调用pool.close
或pool.join
?
推荐答案
不,您不需要,但如果您不再使用池,这可能是个好主意。
调用pool.close
或pool.join
的原因蒂姆·彼得斯在this SO post中说得很好:
至于Pool.lose(),您应该在您永远不会向Pool实例提交更多工作时调用它。因此,Pool.lose()通常在主程序的可并行化部分完成时调用。然后,当已分配的所有工作都已完成时,工作进程将终止。
调用Pool.Join()以等待工作进程终止也是一种很好的实践。除了其他原因外,通常没有很好的方法来报告并行化代码中的异常(异常发生在与您的主程序正在做的事情模糊相关的上下文中),而Pool.Join()提供了一个同步点,它可以报告在工作进程中发生的一些异常,否则您永远看不到这些异常。
这篇关于我们应该在什么时候调用多进程.Pool.Join?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!