並列化されたPythonスクリプトをどのようにプロファイルできますか?
-
05-07-2019 - |
質問
my_parallel_script.py
というPythonスクリプトがあるとします。このスクリプトでは、 multiprocessing
を使用していくつかのことを並列化し、次のコマンドで実行します。
python -m cProfile my_parallel_script.py
これにより、親プロセスのみのプロファイリング出力が生成されます。子プロセスで行われた呼び出しはまったく記録されません。子プロセスもプロファイリングできますか?
ソースを変更することが唯一のオプションである場合、これを行う最も簡単な方法は何ですか?
解決
cProfileは単一のプロセス内でのみ機能するため、子プロセスのプロファイルは自動的に取得されません。
子プロセスのコードを調整して、単一のプロセスとして個別に呼び出すことをお勧めします。次に、プロファイラーの下で実行します。プロファイリング中にシステムをマルチプロセスで実行する必要はおそらくないでしょう。実行する子が1つだけになるようにジョブを簡素化します。
所属していません StackOverflow