【问题标题】:Why does ThreadPoolExecutor max worker count default to 5 times the number of processes?为什么ThreadPoolExecutor max worker count默认是进程数的5倍?
【发布时间】:2020-10-24 02:40:46
【问题描述】:
在ThreadPoolExecutor documentation 中写道:
3.5版更改:如果 max_workers为None或未给定,则默认为机器上的处理器数,乘以5,假设ThreadPoolExecutor经常用于重叠I/O代替CPU 工作量和工作器数量应高于ProcessPoolExecutor 的工作器数量。
ThreadPoolExecutor 使用因子 5 有什么原因,在 python 中将其用于其他线程应用程序是否重要?
【问题讨论】:
标签:
python
python-3.x
multithreading
【解决方案1】:
ThreadPoolExecutor 使用因子 5 有什么原因,在 python 中将其用于其他线程应用程序是否重要?
-
很可能是因为它似乎是一个对典型应用程序来说足够好的数字。没有理论上的理由选择那个数字......或者实际上是任何用于 I/O 密集型应用程序的数字。
-
没有。事实上,将池大小作为调整参数可能是一个更好的主意。
【解决方案2】:
根据给定的规定,它可能只是被选为合理的默认值,即。 e.这些线程将主要等待 IO,而不是使 CPU 内核饱和。
它可能适合也可能不适合您的应用。