我们应该在什么时候调用多进程.Pool.Join?

When should we call multiprocessing.Pool.join?(我们应该在什么时候调用多进程.Pool.Join?)
本文介绍了我们应该在什么时候调用多进程.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.closepool.join

推荐答案

不,您不需要,但如果您不再使用池,这可能是个好主意。

调用pool.closepool.join的原因蒂姆·彼得斯在this SO post中说得很好:

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

调用Pool.Join()以等待工作进程终止也是一种很好的实践。除了其他原因外,通常没有很好的方法来报告并行化代码中的异常(异常发生在与您的主程序正在做的事情模糊相关的上下文中),而Pool.Join()提供了一个同步点,它可以报告在工作进程中发生的一些异常,否则您永远看不到这些异常。

这篇关于我们应该在什么时候调用多进程.Pool.Join?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)