在我的PC中,我有16个逻辑核心(multiprocessing.cpu_count()= 16)。我有一个大约有2000个独立进程的应用程序。我使用了具有不同线程数的多线程,结果如下。
8 | 4225(〜70分钟)
16 | 2733(〜46分钟)
32 | 2156(〜35分钟)
64 | 2123(〜35分钟)
从理论上讲,当线程数为16时,我应该得到最好的结果。即使线程数增加到16以上,我也应该得到相同的结果。但是当线程数增加到32时,我得到最好的结果。 。结果超出该数目似乎没有变化。是什么原因呢?
答案 0 :(得分:2)
严格来说,Python不能同时运行一个以上的线程(由于GIL),因此任何以100%CPU使用率运行Python代码的线程(例如,纯计算)将始终在更多线程下降低性能。
从线程中获得任何性能的提高意味着您正在等待代码中的一些I / O,这使线程的CPU使用率降至100%以下。线程数量的增加使CPU可以填补这些空白。