栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python multiprocessing.Pool()不使用每个CPU的100%

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python multiprocessing.Pool()不使用每个CPU的100%

这是因为

multiprocessing
在后台需要在主进程和工作进程之间进行进程间通信,并且通信开销比
x *x
您实际情况中的“实际”计算()花费了更多的时间。

尝试使用“较重”的计算内核,例如

def f(x):  return reduce(lambda a, b: math.log(a+b), xrange(10**5), x)

更新(说明)

我指出,OP观察到的CPU使用率低是由于其固有的IPC开销,

multiprocessing
但是OP不必为此担心太多,因为原始的计算内核太“轻”了,无法用作基准。
。换句话说,
multiprocessing
通过“太轻”内核的这种方式工作最差。我保证,如果OP
x *x
在之上实现现实世界的逻辑(我敢肯定,这会比“更重”
multiprocessing
,那么OP将实现不错的效率。我的论证得到了我提出的“重”内核的实验的支持。

@FilipMalczak,我希望我的澄清对您有意义。

顺便说有提高效率的一些方法

x *x
同时使用
multiprocessing
。例如,
Pool
除非需要实时解决每个作业,否则我们可以将1,000个作业合并为一个作业(例如,如果您实现REST
API服务器,则不应该这样做)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号