我正在尝试将multiprocessing
包用于Python
。在查看教程时,最清晰,最直接的技术似乎是使用pool.map
,它允许用户轻松命名进程数并将pool.map
函数和该函数的值列表传递给分布在CPU上。我遇到的另一种技术是using queues来管理一群工人。这个answer可以很好地解释pool.map
,pool.apply
和pool.apply_async
之间的区别,但使用pool.map
与使用队列的优缺点是什么?比如这个example?
答案 0 :(得分:10)
pool.map
技术是队列技术的“子集”。也就是说,如果没有pool.map
,您可以使用Pool
和Queue
轻松实现它。也就是说,使用队列可以更灵活地控制池进程,即可以使每个进程的生命周期内只读取一次特定类型的消息,控制池进程的关闭行为等。
答案 1 :(得分:4)
如果你真的在寻找最清晰,最直接的技术",使用concurrent.futures.ProcessPoolExecutor
可能是最简单的方法。它有一个map
方法以及一些使它非常实用的其他原语。它还与Queue
s兼容。