2

我正在使用concurrent.futures' 类ThreadPoolExecutor对 Web 服务进行压力测试。

据我所知,max_workers构造函数参数告诉执行器池中的最大线程数是多少。无论如何,是否可以保证这是将有效使用的数字,或者它可能会小于(例如,由于某些硬件限制)?

如果是这样,有没有办法知道有多少工作线程将被有效实例化?

4

1 回答 1

2

从文档

    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)是为了有效地实例化。

于 2012-02-13T10:29:31.577 回答