26.5。 やり手 —高性能ロギングプロファイラー
バージョン2.2の新機能。
このモジュールは、_hotshot
Cモジュールへのより優れたインターフェースを提供します。 Hotshotは、既存の profile モジュールの代替品です。 ほとんどがCで記述されているため、既存の profile モジュールよりもパフォーマンスへの影響ははるかに小さいはずです。
ノート
hotshot モジュールは、プロファイリング中のオーバーヘッドを最小限に抑えることに重点を置いていますが、データの後処理時間が長くなります。 一般的な使用法では、代わりに cProfile を使用することをお勧めします。 hotshot は維持されておらず、将来的に標準ライブラリから削除される可能性があります。
バージョン2.5で変更:結果は以前よりも意味のあるものになるはずです。タイミングコアに重大なバグが含まれていました。
- class hotshot.Profile(logfile[, lineevents[, linetimings]])
- プロファイラーオブジェクト。 引数 logfile は、ログに記録されたプロファイルデータに使用するログファイルの名前です。 引数 lineevents は、すべてのソース行に対してイベントを生成するか、関数の呼び出し/戻り時にのみ生成するかを指定します。 デフォルトは
0
です(ログ関数の呼び出し/戻りのみ)。 引数 linetimings は、タイミング情報を記録するかどうかを指定します。 デフォルトは1
(タイミング情報を保存)です。
26.5.1。 プロファイルオブジェクト
プロファイルオブジェクトには、次のメソッドがあります。
- Profile.addinfo(key, value)
- プロファイル出力に任意のラベル付き値を追加します。
- Profile.close()
- ログファイルを閉じて、プロファイラーを終了します。
- Profile.fileno()
- プロファイラーのログファイルのファイル記述子を返します。
- Profile.run(cmd)
- スクリプト環境で exec 互換の文字列をプロファイリングします。 __ main __ モジュールのグローバルは、スクリプトのグローバルとローカルの両方として使用されます。
- Profile.runcall(func, *args, **keywords)
- 呼び出し可能オブジェクトの単一の呼び出しをプロファイルします。 追加の位置引数とキーワード引数を渡すことができます。 呼び出しの結果が返され、プロファイリングが途中で無効になっていることを確認しながら、例外をクリーンに伝播できます。
- Profile.runctx(cmd, globals, locals)
- 特定の環境で exec 互換の文字列を評価します。 文字列は、プロファイリングが開始される前にコンパイルされます。
- Profile.start()
- プロファイラーを起動します。
- Profile.stop()
- プロファイラーを停止します。
26.5.2。 ホットショットデータの使用
バージョン2.2の新機能。
このモジュールは、ホットショットプロファイリングデータを標準の pstats Statsオブジェクトにロードします。
- hotshot.stats.load(filename)
- ファイル名からホットショットデータをロードします。 pstats.Stats クラスのインスタンスを返します。
26.5.3。 使用例
この例では、Pythonの「ベンチマーク」パイストーンを実行していることに注意してください。 実行には時間がかかる場合があり、大きな出力ファイルが生成されます。