バージョン 2.2 で追加.
このモジュールは _hotshot C モジュールへのより良いインターフェースを提供します。Hotshot は既存の profile に置き換わるものです。その大半が C で書かれているため、 profile に比べパフォーマンス上の影響がはるかに少なく済みます。
ノート
hotshot は C モジュールでプロファイル中のオーバーヘッドを極力小さくすることに焦点を絞っており、その代わりに後処理時間の長さというつけを払います。通常の使用法についてはこのモジュールではなく cProfile を使うことを推奨します。 hotshot は保守されておらず、将来的には標準ライブラリから外されるかもしれません。
バージョン 2.5 で変更: 以前より意味のある結果が得られているはずです。かつては時間計測の中核部分に致命的なバグがありました.
ノート
hotshot プロファイラはまだスレッド環境ではうまく動作しません。測定したいコード上でプロファイラを実行するためにスレッドを使わない版のスクリプトを使う方法が有用です。
プロファイラ・オブジェクト。引数 logfile はプロファイル・データのログを保存するファイル名です。引数 lineevents はソースコードの1 行ごとにイベントを発生させるか、関数の呼び出し/リターンのときだけ発生させるかを指定します。デフォルトの値は 0 (関数の呼び出し/ リターンのときだけログを残す)です。引数 linetimings は時間情報を記録するかどうかを指定します。デフォルトの値は 1 (時間情報を記録する)です。
プロファイル・オブジェクトは以下のメソッドを持っています。
プロファイル出力の際、任意のラベル名を追加します。
ログファイルを閉じ、プロファイラを終了します。
プロファイラのログファイルのファイル・ディスクリプタを返します。
スクリプト環境で exec 互換文字列のプロファイルをおこないます。 __main__ モジュールのグローバル変数は、スクリプトのグローバル変数、ローカル変数の両方に使われます。
単一の呼び出し可能オブジェクトのプロファイルをおこないます。位置依存引数やキーワード引数を追加して呼び出すオブジェクトに渡すこともできます。呼び出しの結果はそのまま返されます。例外が発生したときはプロファイリングが無効になり、例外をそのまま伝えるようになっています。
プロファイラを開始します。
プロファイラを停止します。
バージョン 2.2 で追加.
このモジュールは hotshot プロファイル・データを標準の pstats オブジェクトにロードします。
filename から hotshot データを読み込み、 pstats.Stats クラスのインスタンスを返します。
これは Python の”ベンチマーク” pystone を使った例です。実行にはやや時間がかかり、巨大な出力ファイルを生成するので注意してください。
>>> import hotshot, hotshot.stats, test.pystone
>>> prof = hotshot.Profile("stones.prof")
>>> benchtime, stones = prof.runcall(test.pystone.pystones)
>>> prof.close()
>>> stats = hotshot.stats.load("stones.prof")
>>> stats.strip_dirs()
>>> stats.sort_stats('time', 'calls')
>>> stats.print_stats(20)
850004 function calls in 10.090 CPU seconds
Ordered by: internal time, call count
ncalls tottime percall cumtime percall filename:lineno(function)
1 3.295 3.295 10.090 10.090 pystone.py:79(Proc0)
150000 1.315 0.000 1.315 0.000 pystone.py:203(Proc7)
50000 1.313 0.000 1.463 0.000 pystone.py:229(Func2)
.
.
.