web-dev-qa-db-ja.com

concurrent.futuresからThreadPoolExecutorを使用する場合のmax_workersの数?

ThreadPoolExecutorでmax.workersを何に設定するかを決定するときに、concurrent.futuresから考慮すべき要素は何ですか?

Python 3.5+が利用可能であると期待できる限り、max_workersをNoneに設定しない理由があります。これにより、「デフォルトでマシンのプロセッサ数に5を掛けた値」になります。ここのドキュメントで説明されていますか? https://docs.python.org/3/library/concurrent.futures.html#concurrent.futures.ThreadPoolExecutor

15

この質問はそれほど一般的に解決できるとは思いません。それはそれぞれのケースに依存します。

から この答え

使用するスレッドが多ければ多いほど、同時実行性は高くなりますが(ある程度まで)、得られるCPUサイクルは少なくなります(コンテキストスイッチがあるため)。何が最適かを確認するには、典型的なワークロードでアプリケーションを計測する必要があります。これに対する普遍的に最適なソリューションはありません。

2
J0ANMM