ProcessPoolExecutor的Python文档说 “如果max_workers为None或未给出,则默认为机器上的处理器数量。" 如果我们深入了解一下,我们可以看到ProcessPoolExecutor使用os.cpu_count()来确定要使用的worker数量(self._max_workers = os.cpu_count() or 1)。因此,获取worker数量的一种方法是执行以下操作(不推荐使用,因为_max_workers的实现可能会在未来发生变化):
pool = ProcessPoolExecutor()
print(pool._max_workers)
如果您在创建池之前需要这些信息,可以直接使用os.cpu_count():
import os
from concurrent.futures import ProcessPoolExecutor
actual_cpu_count = os.cpu_count()
desired_cpu_count = actual_cpu_count - 1 # for example
pool = ProcessPoolExecutor(desired_cpu_count)
1条答案
按热度按时间vshtjzan1#
ProcessPoolExecutor
的Python文档说 “如果max_workers为None或未给出,则默认为机器上的处理器数量。"如果我们深入了解一下,我们可以看到
ProcessPoolExecutor
使用os.cpu_count()
来确定要使用的worker数量(self._max_workers = os.cpu_count() or 1
)。因此,获取worker数量的一种方法是执行以下操作(不推荐使用,因为_max_workers
的实现可能会在未来发生变化):如果您在创建池之前需要这些信息,可以直接使用
os.cpu_count()
: