【发布时间】:2010-10-27 18:08:18
【问题描述】:
我正在 windows 上使用 python 编程,并希望准确测量函数运行所需的时间。我写了一个函数“time_it”,它接受另一个函数,运行它,并返回它运行所用的时间。
def time_it(f, *args):
start = time.clock()
f(*args)
return (time.clock() - start)*1000
我调用了 1000 次并将结果取平均值。 (末尾的 1000 常量是在毫秒内给出答案。)
这个函数似乎可以工作,但我有一种烦人的感觉,我做错了什么,而且这样做我使用的时间比函数运行时实际使用的时间要多。
有没有更标准或更可接受的方式来做到这一点?
当我将测试函数更改为调用打印以使其花费更长的时间时,我的 time_it 函数返回平均 2.5 毫秒,而 cProfile.run('f()') 返回平均 7.0 毫秒。我认为我的函数会高估时间,如果有的话,这是怎么回事?
另外一点,我关心的是功能之间的相对时间,而不是绝对时间,因为这显然会因硬件和其他因素而异。
【问题讨论】:
标签: python testing time profiling