pool.join,pool.close在多处理中的用途?

时间:2016-02-29 19:51:35

标签: python multithreading

在下面的链接中,map类上有Pool方法的说明。

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

我是否遗漏了某些内容,或者是否需要在运行pool.map之后执行pool.close(而不是pool.map_async?注意我使用的是[multiprocessing.dummy][2],它提供了类似的api多处理,但在封面下使用线程。

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

1 个答案:

答案 0 :(得分:3)

pool.close告诉游泳池不要接受任何新工作。

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

因此阻止父进程只是pool.join正在做的副作用。

当您调用pool.map()时,父进程将被阻止,直到map返回结果为止。但使用它后closejoin pool是一种很好的做法,可以更好地管理资源和控制异常。