我们什么时候应该调用multiprocessing.Pool.join?

发布于 2021-01-29 18:20:37

我正在使用’multiprocess.Pool.imap_unordered’如下

from multiprocessing import Pool
pool = Pool()
for mapped_result in pool.imap_unordered(mapping_func, args_iter):
    do some additional processing on mapped_result

我需要打电话pool.closepool.join之后的for循环?

关注者
0
被浏览
53
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    不,您没有,但是如果您不再使用游泳池,那可能是个好主意。

    Tim Peters在此SO帖子中致电pool.close或致电的理由pool.join很明确:

    至于Pool.close(),您应该在永远不会将更多工作提交给Pool实例的情况下(且仅在)进行调用。因此,通常在主程序的可并行化部分完成时调用Pool.close()。然后,当所有已分配的工作完成时,工作进程将终止。

    调用Pool.join()等待工作进程终止也是一种很好的做法。除其他原因外,通常没有很好的方法来报告并行化代码中的异常(异常仅在与您的主程序正在执行的内容有关的上下文中发生),并且Pool.join()提供了一个同步点,可以报告发生的某些异常在您否则无法看到的工作流程中。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看