当线程数增加到比硬件可能的线程数多时,为什么性能会提高?

时间:2019-03-25 04:42:05

标签: python python-3.x multithreading

在我的PC中,我有16个逻辑核心(multiprocessing.cpu_count()= 16)。我有一个大约有2000个独立进程的应用程序。我使用了具有不同线程数的多线程,结果如下。


线程|总时间

8 | 4225(〜70分钟)

16 | 2733(〜46分钟)

32 | 2156(〜35分钟)

64 | 2123(〜35分钟)

从理论上讲,当线程数为16时,我应该得到最好的结果。即使线程数增加到16以上,我也应该得到相同的结果。但是当线程数增加到32时,我得到最好的结果。 。结果超出该数目似乎没有变化。是什么原因呢?

1 个答案:

答案 0 :(得分:2)

严格来说,Python不能同时运行一个以上的线程(由于GIL),因此任何以100%CPU使用率运行Python代码的线程(例如,纯计算)将始终在更多线程下降低性能。

从线程中获得任何性能的提高意味着您正在等待代码中的一些I / O,这使线程的CPU使用率降至100%以下。线程数量的增加使CPU可以填补这些空白。