在下面的链接中,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
答案 0 :(得分:3)
pool.close
告诉游泳池不要接受任何新工作。
pool.join
告诉池等待所有作业完成然后退出,有效地清理池。
因此阻止父进程只是pool.join
正在做的副作用。
当您调用pool.map()
时,父进程将被阻止,直到map返回结果为止。但使用它后close
和join
pool
是一种很好的做法,可以更好地管理资源和控制异常。