Python多线程max_workers

发布于 2021-01-29 14:55:48

根据该文件ThreadPoolExecutor

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

如果我不设置这样的值

ThreadPoolExecutor(max_workers=None)

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

关注者
0
被浏览
121
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

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


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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看