Python利用多个处理器

eri*_*ich 11 python queue multithreading batch-file multiprocessing

让我们说我有一个很大的不同长度的音乐列表需要转换或不同大小的图像需要调整大小或类似的东西.顺序无关紧要,因此非常适合分割多个处理器.

如果我使用multiprocessing.Pool的map函数,似乎所有的工作都是提前划分的,并没有考虑到某些文件可能需要更长时间来完成其他工作的事实.

如果我有12个处理器......接近处理结束时,1或2个处理器将剩下2或3个文件处理,而其他可以使用的处理器闲置.

是否有某种队列实现可以保持所有处理器加载,直到没有剩下的工作要做?

Sve*_*ach 6

有一种Queue在类内multiprocessing专门模块用于这一目的.

编辑:如果您正在寻找一个完整的并行计算框架,它具有map()使用任务队列的功能,请查看IPython的并行计算工具.特别是,您可以使用该TaskClient.map()函数来获得可用处理器的负载平衡映射.