Python多处理:pool.map vs使用队列

Python多处理:pool.map vs使用队列,python,multithreading,queue,Python,Multithreading,Queue,我正在尝试为Python使用多处理包。在阅读教程时,最清晰、最直接的技术似乎是使用pool.map,它允许用户轻松地命名进程的数量,并传递pool.map一个函数和该函数的值列表,以便在CPU之间分发。我遇到的另一个技巧是管理一批工人。这很好地解释了pool.map、pool.apply和pool.apply\u async之间的区别,但是使用pool.map与使用这样的队列相比有哪些优点和缺点?pool.map技术是队列技术的“子集”。也就是说,在没有pool.map的情况下,您可以使用poo

我正在尝试为
Python
使用
多处理
包。在阅读教程时,最清晰、最直接的技术似乎是使用
pool.map
,它允许用户轻松地命名进程的数量,并传递
pool.map
一个函数和该函数的值列表,以便在CPU之间分发。我遇到的另一个技巧是管理一批工人。这很好地解释了
pool.map
pool.apply
pool.apply\u async
之间的区别,但是使用
pool.map
与使用这样的队列相比有哪些优点和缺点?

pool.map
技术是队列技术的“子集”。也就是说,在没有
pool.map的情况下,您可以使用
pool
Queue
轻松实现它。也就是说,使用队列可以让您在控制池进程方面有更大的灵活性,也就是说,您可以使特定类型的消息在每个进程的生命周期中只读取一次,控制池进程的关闭行为,等等。

如果您真的在寻找“最清晰、最直接的技术”,使用可能是最简单的方法。它有一个
map
方法以及一些其他原语,使它非常有用。它还与
Queue
s兼容。

Does
pool.map
在完成时自动关闭进程?从文档:
当池对象被垃圾收集时,将立即调用terminate()。但我不相信它——最好是在应用程序结束时确保池已关闭。否则,系统中可能会留下一些僵尸。至于
pool.map
-不,它不会关闭进程。除非关闭或孤立,否则进程的寿命与池一样长。非常简单直观的库。