Python 使用多个处理器

标签 python multithreading batch-file queue multiprocessing

假设我有一大堆不同长度的音乐需要转换或不同大小的图像需要调整大小或类似的东西。顺序无关紧要,因此非常适合拆分多个处理器。

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

如果我有 12 个处理器……接近处理结束时,1 或 2 个处理器将有 2 或 3 个文件要处理,而其他可以利用的处理器处于闲置状态。

是否有某种队列实现可以让所有处理器保持加载状态,直到没有更多工作要做?

最佳答案

有一个Queue multiprocessing 模块中专门用于此目的的类。

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

关于Python 使用多个处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4838738/

相关文章:

python - 使用 NumPy 将二进制数据读取为 BGRA 图像

python - 更改 Cherrypy 端口并重新启动 Web 服务器

c# - 工厂的依赖注入(inject)生命周期

java - java中的notifyAll

python - NLTK WordNetLemmatizer 中的多线程?

batch-file - 在 DOS/Batch 中 08 小于 1,但 07 大于 1。为什么?

database - 使用批处理文件恢复纯文本 postgresql

如果放入命名空间包中,则子模块的python导入路径

windows - 在批处理脚本中获取文件的绝对路径

python - 如何根据pandas中的第三个数据框连接两个数据框?