Если вы можете пожертвовать способностью иметь значение по умолчанию для аргумента 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