为什么time.clock()返回错误的结果?

时间:2014-05-18 01:01:45

标签: python python-2.7

为什么time.clock()会给出错误的结果?代码如下:

time_start1 = time.time()
time.sleep(5)
bb = time.time() - time_start1;
print bb;
time_1 = time.clock()
time.sleep(5)
cc = time.clock() - time_1
print cc

结果是:

5.00506210327
0.006593

第二个应该是5.0,但为什么它是0.006?我的操作系统是Ubuntu 14.04LTS 64位。我的IDLE版本是2.7.6。

谢谢!

3 个答案:

答案 0 :(得分:11)

time.time()time.clock()正在测量不同的内容。

time.time()衡量自Unix时代以来的挂钟时间。

在Linux系统上,time.clock()正在测量处理器时间,这不是以秒为单位的经过时间。

处理器时间是执行该代码的处理器花费了多少时间的近似值,如man clock页面中所定义的那样time.clock()这是对{{1}}的操作系统的基础调用1}}在Linux系统上制作。)

Python源代码:https://docs.python.org/2/library/time.html

时钟来源:http://linux.die.net/man/3/clock

答案 1 :(得分:3)

在Linux系统上,time.clock()返回处理器时间,而不是您期望的时间。

time.time()测量自纪元以来的挂钟已用时间,而在Linux系统上,time.clock()测量处理器时间。

>>> x = time.clock()
>>> time.sleep(1)
>>> print time.clock()-x
0.001644
>>> 

来自the sources

  

在Unix上,将当前处理器时间返回为以秒为单位的浮点数。精确度,实际上是“处理器时间”含义的定义,取决于同名C函数的精度,但无论如何,这是用于对Python或时序算法进行基准测试的函数。 p>

答案 2 :(得分:0)

Python 3 更新time.clock() 在 Python 3.3 中被移除,请考虑使用 time.perf_counter()

  • time.time() 测量自 Unix 时代(1970 年的参考点)以来经过的时间。

  • time.clock() 正在测量处理器时间,它不是以秒为单位的日期或时间。

  • time.perf_counter() 正在以当前平台上可用的最高精度测量流逝的时间。

处理器时钟时间是 CPU 执行指令所用时间的近似值。从历史上看,运行在 3 GHz 的处理器每秒将有 30 亿次滴答,但现代处理器不再像那样运行了。

时钟时间用于需要极端精度(以纳秒为单位)的基准测试。大多数时间函数用于人类时间/日期,可能只能精确到一毫秒左右。因操作系统和平台而异。

Python 3.3 重做时间函数。它添加了一些跨平台工作的易于使用的函数 (time.perf_counter),并为高级用例公开了一些特定于平台的函数。

https://docs.python.org/3/library/time.html