私はPython関数Iコードのパフォーマンスを計測することができることが好きなので、非常に多くの場合、私はこれに似た何かを...関数デコレータ
import time
def some_function(arg1, arg2, ..., argN, verbose = True) :
t = time.clock() # works best in Windows
# t = time.time() # apparently works better in Linux
# Function code goes here
t = time.clock() - t
if verbose :
print "some_function executed in",t,"sec."
return return_val
はい、私はあなたがはtimeitとパフォーマンスを測定することになっている知っていますしかし、これは私のニーズにうまく機能し、デバッグのためのこの情報のオンとオフを非常にスムーズに行うことができます。
:もちろんこのコードは、私が今、それらについて多くを知っているが、私は、私は、以下の** kwds辞書を用いたデコレータを書くことができると思うこと...私は関数デコレータを知っていた前からではなかったです
some_function(arg1, arg2, ..., argN) # Does not time function
some_function(arg1, arg2, ..., argN, verbose = True) # Times function
作業がよりようなものになるように、私はそれにもかかわらず、私の機能の前の作業を複製したいと思います:
some_function(arg1, arg2, ..., argN) # Does not time function
some_function(arg1, arg2, ..., argN, False) # Does not time function
some_function(arg1, arg2, ..., argN, True) # Times function
私は、これは知っている、引数の数をカウントするデコレータが必要になると思います元の関数が何回取るか、ストライトするかpを超過して関数の正しい数を渡してください...これを行うためにPythonに指示する方法は不明ですが...可能ですか?同じことを達成するより良い方法はありますか?
が、どのような "some_function(ARG1、ARG2、...、ARGN、トゥルー)" も実行しなければならないのですか? –
さて、別の種類のデコレータが必要です。 inspectを使うか、修飾された関数が取る引数の固定数を示す追加の数値をとります。 – Stephan202
Stephanのためにそれを書いてくれてありがとう!私は仕事から家に帰る途中でこれについて考えていましたが、キーワード引数を使用する方が良い方法ですが、関数の時間を何倍にするかなどの他のパラメータを含めることができるという結論に達しましたプリントアウトに平均時間、最小時間、またはより詳細な統計情報が反映されるべきかどうか。 – Jaime