1

マルチプロセッシング コードのプロファイリングに関するこの質問と同様に...

コードベースのプロファイルを作成する必要があり、cProfile を使用する予定でした。このプログラムは本質的に、評価関数を並列に実行する遺伝的アルゴリズムです。キッカーは、この評価関数がコマンドラインを介して別の Python プログラムを外部から呼び出すことです。

cProfile を使用して実行全体をプロファイリングすることはできますか? 基本的に、ワーカー関数 (累積時間、pcalls、メモリ オーバーヘッドなど) 内でプロファイリングを開始するつもりでしたが、外部プログラムがプロファイラーに表示されないことが懸念されます。

4

1 に答える 1

1

外部プログラムがプロファイラーに「見えない」ことは正しいです。cProfile モジュールは、関数呼び出しやリターンなどのイベントでさまざまなカウンターをトリガーするソフトウェア フックをコードに追加します。外部コマンドの実行に使用している呼び出しsubprocess.call()や、外部コマンドの実行に関する詳細は表示されません。呼び出しがブロックされた時間を確認できるため、外部コマンドの実行にかかる時間はわかりますが、それらのプロファイリングの詳細はわかりません。

そうは言っても、cProfile モジュールを呼び出し先スクリプトにも追加できない理由はなく、メイン スクリプトと呼び出し先外部スクリプトの両方のプロファイル結果を取得できます。それらは同じファイルにはありません。

于 2014-09-29T16:20:44.870 に答える