作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的电脑中,我有 16 个逻辑核心(multiprocessing.cpu_count()=16)。我有一个具有大约 2000 个独立进程的应用程序。我使用了不同线程数的多线程,结果如下。
<小时/>8 | 4225(约 70 分钟)
16 | 2733(约 46 分钟)
32 | 2156(约 35 分钟)
64 | 2123(约 35 分钟)
理论上,当线程数为 16 时,我应该得到最好的结果。即使线程数增加到 16 以上,我也应该得到相同的结果。但是当线程数增加到 32 时,我得到最好的结果.结果看起来在该计数之上没有变化。这是什么原因?
最佳答案
严格来说,Python 不能同时运行多个线程(因为 GIL),因此任何以 100% CPU 使用率运行 Python 代码的线程(例如纯计算)总会随着线程数量的增加而降低性能。
从线程中获得任何性能提升意味着您的代码中有一些正在等待的 I/O,这使得您的线程的 CPU 利用率降至 100% 以下。增加线程数量可以让 CPU 填补这些空白。
关于python - 为什么当线程数增加到超过硬件可能的线程数时性能会提高?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55331369/
我是一名优秀的程序员,十分优秀!