在Python中使用哪个更好?Time.clock()还是time.time()?哪一种更准确?

例如:

start = time.clock()
... do something
elapsed = (time.clock() - start)

vs.

start = time.time()
... do something
elapsed = (time.time() - start)

当前回答

简单的答案是:大多数时候time.clock()会更好。 然而,如果你正在为某些硬件计时(例如你在GPU中放入的某些算法),那么time.clock()将摆脱这个时间,而time.time()是唯一剩下的解决方案。

注意:无论使用何种方法,计时将取决于您无法控制的因素(进程何时切换,频率如何,……),这对于time.time()来说更糟糕,但对于time.clock()也存在,因此您永远不应该只运行一个计时测试,而是始终运行一系列测试并查看时间的均值/方差。

其他回答

有一件事要记住: 修改系统时间会影响time.time(),但不会影响time.clock()。

我需要控制一些自动测试的执行。如果测试用例的一个步骤所花费的时间超过了给定的时间量,那么该TC就会中止以继续进行下一个步骤。

但是有时需要一个步骤来更改系统时间(检查被测试应用程序的调度器模块),因此在几个小时后设置系统时间后,TC超时,测试用例被终止。我必须从time.time()切换到time.clock()来正确处理这个问题。

据我所知,time.clock()具有系统所允许的最大精度。

对比Ubuntu Linux和Windows 7的测试结果。

在Ubuntu上

>>> start = time.time(); time.sleep(0.5); (time.time() - start)
0.5005500316619873

Windows 7操作系统

>>> start = time.time(); time.sleep(0.5); (time.time() - start)
0.5

我使用这段代码来比较2种方法。我的操作系统是windows 8,处理器核心i5, RAM 4GB

import time

def t_time():
    start=time.time()
    time.sleep(0.1)
    return (time.time()-start)


def t_clock():
    start=time.clock()
    time.sleep(0.1)
    return (time.clock()-start)




counter_time=0
counter_clock=0

for i in range(1,100):
    counter_time += t_time()

    for i in range(1,100):
        counter_clock += t_clock()

print "time() =",counter_time/100
print "clock() =",counter_clock/100

输出:

time() = 0.0993799996376

clock() = 0.0993572257367

简单回答:在Python中使用time.clock()进行计时。

在*nix系统上,clock()返回处理器时间为浮点数,以秒表示。在Windows上,它以浮点数的形式返回自第一次调用此函数以来所经过的秒数。

time()返回自纪元以来的秒数,以UTC为单位,作为浮点数。不能保证您将获得比1秒更好的精度(即使time()返回一个浮点数)。还要注意,如果在两次调用该函数之间设置了系统时钟,那么第二次函数调用将返回一个较低的值。