14

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

4

2 回答 2

10

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

于 2013-09-26T17:42:53.250 回答
4

如果您真的在寻找“最清晰和最直接的技术”,那么使用concurrent.futures.ProcessPoolExecutor可能是最简单的方法。它有一个map方法以及其他一些使其非常有用的原语。它也与Queues 兼容。

于 2013-09-26T17:47:41.170 回答