4

我最初为计时函数制作了一个自定义函数,如下所示:

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 参数时,我只是不知道该怎么做。我已经发现我必须在设置 arg 中执行此操作:

"from __main__ import function"

但我不知道如何处理 *args,因为 'stmt' 和 'setup' 参数都是字符串,我该如何传递变量?

4

1 回答 1

6

从 Python 2.6 开始,timeit除了字符串之外的模块还接受可调用的 as 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'))
于 2012-02-05T05:45:35.567 回答