当使用Python多处理池时,工作进程的数量是否应该与CPU或核心的数量相同?
这篇文章http://www.howtogeek.com/194756/cpu-basics-multiple-cpus-cores-and-hyper-threading-explained/说,每个核心实际上是中央处理器芯片上的中央处理单元。因此,拥有1个进程/核心似乎不应该有问题
例如,如果我有一个具有4个核心的CPU芯片,是否可以在不降低性能的情况下运行总共4个进程的1个进程/核心?
发布于 2017-01-06 18:23:01
根据我对python和多进程的了解,最好的方法是...
超线程对python没有帮助。在许多情况下,它实际上会影响性能,但当然要先自己测试它。
至少在使用32位python的windows上进行了广泛的测试,不这样做会因为缓存的持续垃圾而显著降低性能。再说一次:跳过逻辑核心!假设你有一个带超线程的英特尔cpu,逻辑上是1,3,5,7等。
更多的线程比真正的内核更多对你没有任何帮助,除非还有IO发生,如果你在处理数字,它不应该发生。自己测试我的声明,特别是如果您使用Linux,因为我根本没有在Linux上测试。
发布于 2017-01-06 18:03:24
这真的取决于您的工作负载。逐个案例,最好的方法是运行一些基准测试,看看结果是什么。
调度进程是一项开销很大的操作,运行的进程越多,就越需要更改上下文。
如果您的大多数进程都没有运行(例如,它们正在等待IO ),那么过度提交可能是有益的。相反,如果您的进程大部分时间都在运行,那么添加更多的进程来争用您的CPU将是有害的。
https://stackoverflow.com/questions/41498670
复制相似问题