根据该文件的ThreadPoolExecutor
ThreadPoolExecutor
如果max_workers是None或者没有给出,将默认为机器上的处理器数量。
max_workers
None
如果我不设置这样的值
ThreadPoolExecutor(max_workers=None)
如果我的价值很低(2),对性能是否不利?python是否已经为None值分配了所有CPU进程,而对于带有数字的值只分配了2个?
首先,您似乎在链接中引用了文档中错误的部分,即用于进程而不是线程的部分。在一个concurrent.futures.ThreadPoolExecutor状态:
concurrent.futures.ThreadPoolExecutor
改变在3.5版本中:如果max_workers是None还是没有给出,将默认为机器,再乘以5上的处理器数量,假设的ThreadPoolExecutor通常用于重叠I / O,而不是CPU的工作,工人的数量应该更高超过ProcessPoolExecutor的工人数量。
由于您使用的是线程而不是进程,因此假设您的应用程序是IO绑定的,而不是CPU绑定的,并且您将其用于并发而不是并行性。您使用的线程越多,您将实现的并发性越高(最高),但是获得的CPU周期就越少(因为会有上下文切换)。您必须在典型的工作负载下对应用程序进行检测,以查看最适合您的应用程序。对此没有通用的最佳解决方案。