あなたはあなたがそのようにそれを行うことができますnumberOfExecTime
引数のデフォルト値を持っている能力を犠牲にすることができた場合:
from timeit import Timer
from functools import partial
def get_execution_time(function, numberOfExecTime, *args, **kwargs):
"""Return the execution time of a function in seconds."""
return round(Timer(partial(function, *args, **kwargs))
.timeit(numberOfExecTime), 5)
def foo(a, b, c = 12):
print a, b, c
get_execution_time(foo, 1, 3, 4, c = 14)
それとも、そのようにそれを行うと、まだnumberOfExecTime
のデフォルト値を持つことができます。
from timeit import Timer
from functools import partial
def get_execution_time(function, *args, **kwargs):
"""Return the execution time of a function in seconds."""
numberOfExecTime = kwargs.pop('numberOfExecTime', 1)
return round(Timer(partial(function, *args, **kwargs))
.timeit(numberOfExecTime), 5)
def foo(a, b, c = 1):
print a, b, c
get_execution_time(foo, 1, 2, c = 2)
# => 1 2 2
get_execution_time(foo, 4, 5, c = 3, numberOfExecTime = 2)
# => 4 5 3
# => 4 5 3
これは既存のコードを使用した場合の最良の回答です。しかし、@ KL-7は、受信したデータをより細かく制御したいときは、より表現力があります。 – Edwin
私はKL-7(私が投稿したものに加えて)と同じ提案を投稿することをためらったが、私の目には、この機能の呼び出しがより簡単なので、最終的に投稿することを決定したバージョンが、渡された引数のどちらが関数に渡され、どちらがメソッド自体の引数であるかのあいまいさはありません。 – gecco
それは、私がそれ以上の表現力を持っていたということです。質問者が何を望んでいるかに依存しているので、どの答えが一番良いかは決して言いませんでした。 – Edwin