10.8 拡張 -- プロファイラの改善

profile モジュールの Profile クラスはプロファイラの機 能を拡張するため、派生クラスの作成を前提に書かれています。しかしその方 法を説明するには、Profile の内部動作について詳細な解説が必要と なるため、ここでは述べません。もし拡張をおこないたいのであれば、 profile モジュールのソースを注意深く読む必要があります。

プロファイラが時刻を取得する方法を変更したいだけなら(たとえば、通常の 時間(wall-clock)を使いたいとか、プロセスの経過時間を使いたい場合)、時 刻取得用の関数を Profile クラスのコンストラクタに指定すること ができます。

pr = profile.Profile(your_time_func)

この結果生成されるプロファイラは時刻取得に your_time_func() を 呼び出すようになります。このようなユーザ定義関数は単一の数値、あるいは その合計が(os.times() と同じように)累計時間を示すリストを返 すようになっていなければなりません。関数が1つの数値、あるいは長さ2の数 値のリストを返すようになっていれば、非常に高速に処理が可能になります。

選択する時刻取得関数によって、プロファイラクラスを補正する必要があるこ とに注意してください。多くのマシンにおいて、プロファイル時のオーバヘッ ドを少なくする方法として、タイマはロング整数を返すのが最善です。 os.times() は浮動小数のタプルを返すので おすすめできま せん)。タイマをより正確なものに置き換えたいならば、派生クラスでそのディ スパッチ・メソッドを適切なタイマ呼出しと適切な補正をおこなうように書き 直す必要があります。

ご意見やご指摘をお寄せになりたい方は、 このドキュメントについて... をご覧ください。