python Time.clock结果太短了

时间:2018-04-28 11:39:35

标签: python

我在python

中测试time.clock()函数时使用此代码
start = time.clock()
print(start)
time.sleep(3)
end = time.clock()
print(end)
print(end-start)

,结果是

0.282109
0.282151
4.199999999998649e-05

该文档说“在Unix上,将当前处理器时间作为以秒表示的浮点数返回。”但是如果线程正在休眠3秒钟,那么结束开始的结果怎么这么低?

2 个答案:

答案 0 :(得分:5)

处理器时间意味着通常称为CPU时间,即处理器代表当前进程完成的工作量。如果你只睡了3秒钟,这几乎没有。

请改用time.time()

答案 1 :(得分:2)

正如手册中引用的@decece,perf_counter()在这里是更好的选择。

import time

start = time.perf_counter()
time.sleep(3)
end = time.perf_counter()

print(end-start) # 3.003116666999631

如果你想测试arbritary代码,timeit - module是一个不错的选择:

import timeit
n = 4
print( timeit.timeit( "time.sleep(3)", setup="import time", number=n)/n) 

输出:

3.00312000513

你可以给它一个setup=代码执行一次,让它执行你的源代码number次,获得所有执行的总时间,否则默认设置。

如果再次按数字划分,这将平均计时时间 - 使得结果时间更加稳健。

API:timeit

sleep-method的具体测量值会有所不同,因为它主要保证等待“至少”给定的秒数,具体取决于操作系统 - 重新安排和中断可能需要更长的时间:

  

此外,由于系统中其他活动的安排,暂停时间可能比任意数量的请求时间长。

     

在版本3.5中更改:即使睡眠被信号中断,该函数现在至少休眠秒,除非信号处理程序引发异常(参见PEP 475的基本原理)。