その他¶
Python 関数のプロファイラーユーティリティ¶
- nnabla.utils.function_profile.profile(fn=None, condition=None, profile_class=<class 'cProfile.Profile'>, print_freq=0, sort_keys=None, print_restrictions=None)[ソース]¶
cProfile.Profile
のように、Python プロファイラーでプロファイリングされた関数をデコレートします。注意: ここでの
関数
はFunction
を指しません。Python 関数です。- パラメータ
fn (function) -- プロファイリングされた関数。None (デフォルト) が指定された場合、新しいデコレーター関数が戻ります。本デコレーター関数のオプション引数を指定したい場合に使用します。
condition (function) -- デコレートした関数と同じ入力を受け取り、ブール値を返す関数オブジェクト。
condition
関数がTrue
を返したときのみデコレートした関数がプロファイリングされます。デフォルトでは、常にTrue
を返すため、デコレートした関数を呼び出す度にプロファイリングが実行されます。profile_class (class) --
cProfile.Profile
やProfile.Profile
のようなプロファイラークラス。デフォルトはcProfile.Profile
です。print_freq (int) -- プロファイリング結果は、
print_freq
で指定された時間間隔での関数呼び出しで出力されます。 0 (デフォルト) が指定された場合、プロファイリング結果は、decorated_func.profiler.print_stats()
が手動で呼び出されない限り、Python プロセスの最後部のみに出力されます。sort_keys (iterable) --
pstats.Stats.sort_stats()
に引数として受け渡す、リストまたは文字列のタプル。デフォルトは('cumulative', 'time', 'calls')
。print_restriction (iterable) --
pstats.Stats.print_stats()
に引数として受け渡す、リストまたは文字列のタプル。デフォルトは``(40,)`` で、デコレートした関数内のうち 40 の関数がプロファイリング結果に出力されます。
戻り値: function
デコレート関数。
fn
がNone
の場合、オプション引数付きの新しいデコレーター関数が指定されます。サンプル
次のように関数をデコレートすると、プロファイリング結果は Python プロセスの最後部に出力されます。
from nnabla.utils import function_profile @function_profile.profile def foo(a, b, c=None, d=None): ...
これまでのプロファイリング結果を手動で出力するには、
profiler
属性としてデコレートした関数にアタッチされたFunctionProfile
オブジェクトのFunctionProfile.print_stats()
をご使用ください。foo.profiler.print_stats()
特定の引数が受け渡されたときにのみ関数をプロファイリングする場合、次のように
condition
引数を使用してください。def profile_only_if_c_is_not_none(a, b, c=None, d=None): return c is not None @function_profile.profile(condition=profile_only_if_c_is_not_none) def foo(a, b, c=None, d=None): ...
- class nnabla.utils.function_profile.FunctionProfile(fn, condition=None, profile_class=<class 'cProfile.Profile'>, print_freq=0, sort_keys=None, print_restrictions=None)[ソース]¶
関数プロファイラーオブジェクト
通常、ユーザーが直接使うことはありません。
profile()
の実行を通じて生成され、属性profiler
ーとしてデコレートした関数にアタッチされます。詳しくはprofile
関数をご覧ください。- print_stats(reset=True)[ソース]¶
手動でプロファインリング結果を出力します。
- パラメータ
reset (bool) -- False が指定された場合、これまでのプロファイリング統計が維持されます。
True
(デフォルト) の場合、reset_stats
を呼び出してプロファイリング統計をリセットします。