python - 多处理中 pool.join、pool.close 的目的?

标签 python multithreading

在下面的链接中有对 Pool 类的 map 方法的解释。

它似乎阻塞直到结果准备好。这意味着不需要执行 pool.close(); pool.join() 在运行 pool.map 之后,但是它在 this 中以这种方式演示博客。

在运行 pool.map(与 pool.map_async 相对)之后,我是否遗漏了什么或者是否需要执行 pool.close?请注意,我正在使用 [multiprocessing.dummy][2],它提供了与多处理类似的 api,但在幕后使用了线程。

https://docs.python.org/2/library/multiprocessing.html#multiprocessing.pool.multiprocessing.Pool.map

最佳答案

pool.close 告诉池不接受任何新作业。

pool.join 告诉池等待所有作业完成然后退出,有效地清理池。

所以阻塞父进程只是 pool.join 正在做的事情的副作用。

的确,当您调用 pool.map() 时,父进程会被阻塞,直到 map 返回结果。但使用后关闭加入是一个很好的做法,可以更好地管理资源和控制异常。

关于python - 多处理中 pool.join、pool.close 的目的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35708371/

相关文章:

python - 创建一种从文件中读取正数和负数的方法

python - 如何确定正在运行的当前进程是否是父进程?

C#将方法名称传递给带有变量的参数化threadstart

Java:线程启动后如何继续执行?

python - 如何在 cython 中指定列表和元组类型

linux - 帮助创建温度湿度脚本

python - 使用 PIL 时释放内存

python - 将数据分散到多个列中

c++ - <mutex> 和 <condition_variable> 的异常处理

c - 线程的优雅终止