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 に答える