首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用多进程池时,工作进程的数量是否应该与CPU或核心的数量相同?

当使用多进程池时,工作进程的数量是否应该与CPU或核心的数量相同?
EN

Stack Overflow用户
提问于 2017-01-06 11:53:15
回答 2查看 1.4K关注 0票数 0

当使用Python多处理池时,工作进程的数量是否应该与CPU或核心的数量相同?

这篇文章http://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/说,每个核心实际上是中央处理器芯片上的中央处理单元。因此,拥有1个进程/核心似乎不应该有问题

例如,如果我有一个具有4个核心的CPU芯片,是否可以在不降低性能的情况下运行总共4个进程的1个进程/核心?

EN

回答 2

Stack Overflow用户

发布于 2017-01-06 18:23:01

根据我对python和多进程的了解,最好的方法是...

  • 每个核心一个进程,但跳过逻辑进程。

超线程对python没有帮助。在许多情况下,它实际上会影响性能,但当然要先自己测试它。

  • 使用亲和性(pip install亲和性)模块将每个进程连接到特定的核心。

至少在使用32位python的windows上进行了广泛的测试,不这样做会因为缓存的持续垃圾而显著降低性能。再说一次:跳过逻辑核心!假设你有一个带超线程的英特尔cpu,逻辑上是1,3,5,7等。

更多的线程比真正的内核更多对你没有任何帮助,除非还有IO发生,如果你在处理数字,它不应该发生。自己测试我的声明,特别是如果您使用Linux,因为我根本没有在Linux上测试。

票数 2
EN

Stack Overflow用户

发布于 2017-01-06 18:03:24

这真的取决于您的工作负载。逐个案例,最好的方法是运行一些基准测试,看看结果是什么。

调度进程是一项开销很大的操作,运行的进程越多,就越需要更改上下文。

如果您的大多数进程都没有运行(例如,它们正在等待IO ),那么过度提交可能是有益的。相反,如果您的进程大部分时间都在运行,那么添加更多的进程来争用您的CPU将是有害的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41498670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档