我在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秒钟,那么结束开始的结果怎么这么低?
答案 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的基本原理)。