我最初为定时函数制作了一个自定义函数,如下所示:
def timefunc(function, *args):
start = time.time()
data = function(*args)
end = time.time()
time_taken = end - start
print "Function: "+function.__name__
print "Time taken:",time_taken
return data
现在,在了解了timeit模块之后,我想用它来实现相同的功能。在发送函数和* args参数时,我无法弄清楚如何做到这一点。我已经发现我必须在setup arg中执行此操作:
"from __main__ import function"
但我无法弄清楚如何处理* args,因为'stmt'和'setup'参数都是字符串,我如何传递变量?
答案 0 :(得分:6)
从Python 2.6开始,除了字符串之外,timeit
模块也接受可调用的stmt
。考虑到这一点,你可以这样做:
import timeit
def timefunc(function, *args):
def wrap():
function(*args)
t = timeit.Timer(wrap)
return t.timeit(100)
def test(arg):
foo = arg
print(timefunc(test, 'bar'))