一尘不染

Python多线程max_workers

python

根据该文件ThreadPoolExecutor

如果max_workersNone或者没有给出,将默认为机器上的处理器数量。

如果我不设置这样的值

ThreadPoolExecutor(max_workers=None)

如果我的价值很低(2),对性能是否不利?python是否已经为None值分配了所有CPU进程,而对于带有数字的值只分配了2个?


阅读 765

收藏
2021-01-20

共1个答案

一尘不染

首先,您似乎在链接中引用了文档中错误的部分,即用于进程而不是线程的部分。在一个concurrent.futures.ThreadPoolExecutor状态:

改变在3.5版本中:如果max_workersNone还是没有给出,将默认为机器,再乘以5上的处理器数量,假设的ThreadPoolExecutor通常用于重叠I
/ O,而不是CPU的工作,工人的数量应该更高超过ProcessPoolExecutor的工人数量。


由于您使用的是线程而不是进程,因此假设您的应用程序是IO绑定的,而不是CPU绑定的,并且您将其用于并发而不是并行性。您使用的线程越多,您将实现的并发性越高(最高),但是获得的CPU周期就越少(因为会有上下文切换)。您必须在典型的工作负载下对应用程序进行检测,以查看最适合您的应用程序。对此没有通用的最佳解决方案。

2021-01-20