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

时间:2013-09-26 17:32:13

标签: python multithreading queue

我正在尝试将multiprocessing包用于Python。在查看教程时,最清晰,最直接的技术似乎是使用pool.map,它允许用户轻松命名进程数并将pool.map函数和该函数的值列表传递给分布在CPU上。我遇到的另一种技术是using queues来管理一群工人。这个answer可以很好地解释pool.mappool.applypool.apply_async之间的区别,但使用pool.map与使用队列的优缺点是什么?比如这个example

2 个答案:

答案 0 :(得分:10)

pool.map技术是队列技术的“子集”。也就是说,如果没有pool.map,您可以使用PoolQueue轻松实现它。也就是说,使用队列可以更灵活地控制池进程,即可以使每个进程的生命周期内只读取一次特定类型的消息,控制池进程的关闭行为等。

答案 1 :(得分:4)

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