Lon*_*ner 7 python cpu performance multithreading gil
的文档concurrent.futures.ThreadPoolExecutor说:
改变在3.5版本中:如果max_workers是
None或者没有给出,将默认为机器上的处理器,乘以数量5,假设的ThreadPoolExecutor通常用于重叠I / O,而不是CPU的工作,工人的数量应该更高比ProcessPoolExecutor的工人数量。
我想了解为什么默认max_workers值取决于 CPU 的数量。不管我有多少 CPU,在任何时间点都只能运行一个 Python 线程。
让我们假设每个线程都是 I/O 密集型的,它只有 10% 的时间在 CPU 上,90% 的时间在等待 I/O。然后让我们假设我们有 2 个 CPU。我们只能运行 10 个线程来使用 100% 的 CPU。我们不能再使用 CPU,因为在任何时间点都只有一个线程在运行。即使有 4 个 CPU,也是如此。
那么为什么默认是max_workers根据 CPU 数量来决定的呢?
| 归档时间: |
|
| 查看次数: |
3977 次 |
| 最近记录: |