为什么 ThreadPoolExecutor 最大工作器计数默认为进程数的 5 倍?



在ThreadPoolExecutor文档中,它说:

在 3.5 版更改: 如果max_workersNone或未给出,它将默认为计算机上的处理器数乘以 5,假设ThreadPoolExecutor通常用于重叠 I/O 而不是 CPU 工作,并且工作器数量应高于ProcessPoolExecutor的工作器数量。

ThreadPoolExecutor 使用因子 5 有什么原因吗?将其用于 python 中的其他线程应用程序是否重要?

ThreadPoolExecutor 使用因子 5 有什么原因吗?在 python 中将其用于其他线程应用程序是否重要?

  1. 很可能是因为它似乎是一个足以满足典型应用程序使用的数字。 没有理论上的理由选择这个数字......或者实际上是 I/O 密集型应用程序的任何数字。

  2. 不。 事实上,将池大小作为优化参数可能是一个更好的主意。

它可能只是被选为合理的默认值,给出的规定,即这些线程将主要等待 IO,而不是饱和 CPU 内核。

它可能适合也可能不适合您的应用程序。

相关内容

最新更新