我正在尝试计时我从python调用的外部进程的执行时间。我想计时,在这里看到time.clock()是要走的路。但是,我看到的结果与time.time()非常不一致。我使用 time.sleep 设置了一个简单的示例来模拟外部进程:
def t1():
t0 = time.clock()
time.sleep(2.5)
return time.clock() - t0
def test_t1():
timings = []
for i in range(100):
timings.append(t1())
print sum(timings)/len(timings)
t2/test_t2 的定义类似,但使用 time.time() 而不是 time.clock()
>>>test_t1()
5.884e-05
>>>test_t2()
2.49959212065
为什么时间时钟在这里如此错误?
编辑:我应该提到我正在MacOSX上运行此测试,并且部署的代码将在Ubuntu中运行
time.clock()
返回代码中花费的计算时间;由于sleep
只需要很少的CPU,因此不会花费太多time.clock
时间。
time.time()
获得实际的现实生活中的时差,因此会更容易注意到睡眠。
time.clock()
可能是准确的,但不是在测量挂钟时间。 在您的盒子上,它可能正在测量 CPU 时间。 由于您的测试程序几乎将所有时间都花在睡眠(time.sleep(2.5)
),因此它累积的CPU时间非常少。 不过,time.time()
正在测量挂钟时间。 阅读文档了解更多信息;-)