我正在Windows上的python中进行编程,想准确地测量函数运行所花费的时间。我已经编写了一个函数“time_it”,该函数需要另一个函数,然后运行它并返回运行时间。

def time_it(f, *args):
    start = time.clock()
    f(*args)
    return (time.clock() - start)*1000

我称其为1000次并取平均值。 (最后的1000常数以毫秒为单位给出答案。)

该函数似乎可以正常工作,但是我有一种na不安的感觉,那就是我做错了什么,并且通过这种方式,我花的时间比函数运行时实际花费的时间更多。

有没有更标准或可接受的方式来做到这一点?

当我将测试函数更改为调用打印以使其花费更长的时间时,time_it函数返回的平均时间为2.5毫秒,而cProfile.run('f()')返回的平均时间为7.0毫秒。我认为我的函数会高估时间(如果有的话),这是怎么回事?

另外要注意的是,我关心的是功能彼此之间的相对时间,而不是绝对时间,因为绝对时间显然会因硬件和其他因素而有所不同。

最佳答案

建议您不要 checkout 内置的Python分析器(profilecProfile,具体取决于您的需求),而不是编写自己的分析代码:http://docs.python.org/library/profile.html

关于python - python中函数的准确计时,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/889900/

10-12 18:25
查看更多