为什么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。
谢谢!
答案 0 :(得分:11)
time.time()
和time.clock()
正在测量不同的内容。
time.time()
衡量自Unix时代以来的挂钟时间。
在Linux系统上,time.clock()
正在测量处理器时间,这不是以秒为单位的经过时间。
处理器时间是执行该代码的处理器花费了多少时间的近似值,如man
clock
页面中所定义的那样time.clock()
这是对{{1}}的操作系统的基础调用1}}在Linux系统上制作。)
答案 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),并为高级用例公开了一些特定于平台的函数。