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

例如:

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

vs.

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

当前回答

其他人回答了re: time.time() vs. time.clock()。

但是,如果您是为了基准测试/分析目的而对代码块的执行进行计时,则应该查看timeit模块。

其他回答

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

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

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

对比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

这种差异是平台特有的。

例如,clock()在Windows上与Linux上有很大不同。

对于您描述的这类示例,您可能希望使用"timeit"模块。

在Linux上,time()比clock()具有更好的精度。Clock()的精度小于10毫秒。而time()提供完美的精度。 我的测试用的是CentOS 6.4和python 2.6

using time():

1 requests, response time: 14.1749382019 ms
2 requests, response time: 8.01301002502 ms
3 requests, response time: 8.01491737366 ms
4 requests, response time: 8.41021537781 ms
5 requests, response time: 8.38804244995 ms

使用时钟():

1 requests, response time: 10.0 ms
2 requests, response time: 0.0 ms 
3 requests, response time: 0.0 ms
4 requests, response time: 10.0 ms
5 requests, response time: 0.0 ms 
6 requests, response time: 0.0 ms
7 requests, response time: 0.0 ms 
8 requests, response time: 0.0 ms

Clock() ->浮点数

返回CPU时间或进程启动后的实时时间 第一次调用clock()。这和系统的精度一样高 记录。

Time() ->浮点数

返回当前时间(以秒为单位)。 如果系统时钟提供,可能会出现几分之一秒。

通常time()更精确,因为操作系统存储进程运行时间的精度与存储系统时间(即实际时间)的精度不同。