我正在使用concurrent.futures
' 类ThreadPoolExecutor
对 Web 服务进行压力测试。
据我所知,max_workers
构造函数参数告诉执行器池中的最大线程数是多少。无论如何,是否可以保证这是将有效使用的数字,或者它可能会小于(例如,由于某些硬件限制)?
如果是这样,有没有办法知道有多少工作线程将被有效实例化?
我正在使用concurrent.futures
' 类ThreadPoolExecutor
对 Web 服务进行压力测试。
据我所知,max_workers
构造函数参数告诉执行器池中的最大线程数是多少。无论如何,是否可以保证这是将有效使用的数字,或者它可能会小于(例如,由于某些硬件限制)?
如果是这样,有没有办法知道有多少工作线程将被有效实例化?
从文档
Args:
max_workers: The maximum number of threads that can be used to
execute the given calls.
从代码 _adjust_thread_count() 看来,新线程是按需创建的,并且受 max_workers 限制。
if len(self._threads) < self._max_workers:
t = threading.Thread(target=_worker,
args=(weakref.ref(self, weakref_cb),
self._work_queue))
也似乎len(self._threads)
是为了有效地实例化。