从current.futures使用ThreadPoolExecutor时,max_workers的数量是多少?

edj*_*ams 13 python python-3.x concurrent.futures

在决定从current.futures在ThreadPoolExecutor中将max_workers设置为什么时,应考虑哪些因素?

只要您可以期望Python 3.5+可用,是否有任何理由不将max_workers设置为None,然后将“默认设置为计算机上的处理器数量乘以5”,如此处的文档所述? https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor

J0A*_*NMM 12

我不认为这个问题可以这么笼统地解决;这将取决于每种情况。

这个答案

您使用的线程越多,您将实现的并发性越高(在一定程度上),但您获得的 CPU 周期越少(因为会有上下文切换)。您必须在典型的工作负载下检测您的应用程序,以了解什么最适合您。对此没有普遍的最佳解决方案。

  • 希望有评论指出为什么这是错误的,而不是仅仅获得反对票..:( (3认同)
  • 根据并行运行的内容,要考虑的另一点是内存占用。 (2认同)