2012-02-13 8 views
2

私はconcurrent.futures 'クラスThreadPoolExecutorを使用して、Webサービスのストレステストを行っています。ThreadPoolExecutorの内部

私が理解できる限り、max_workersコンストラクタパラメータは、プールに入れるスレッドの最大数をエグゼキュータに伝えます。とにかく、それが効果的に使用される数であること、またはそれより少ない(例えば、ハードウェアの制限のために)より少ないことを保証するものはありますか?

もしそうなら、効果的にインスタンス化されるワーカースレッドの数を知る方法はありますか?コードからドキュメントから

答えて

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)が効果的にインスタンス化のためにあるようです。

+0

実際、ProcessExplorerのスレッドパネルを見ると、max_workersは常に有効と思われます。ありがとうございました :) – Simone