大家好,相信很多刚开始刷题的小伙伴总会遇到程序运行超时的问题,所以大家肯定都想提前知道自己的程序运行了多长时间,这次我就来总结一下有那几种方法可用。如果有误,欢迎各位大佬指正。
以下方法模板为:start 要运行的程序 end 。再计算end-start来输出时间
1.time.clock()
用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。
import time
start = time.clock()
time.sleep(2)
end = time.clock()
print(end-start)
该方法在pyhon3.3版本之后就已经弃用了,在python3.8之后将会被移除,也就是说该方法在python3.8以前还可以用,但是不建议用,在python3.8以后再用就会报错了
所以,建议大家现在就不用这种方法了
2.time.time()import time
start = time.time()
def mov(n,a,b,c):
if n==1:
print(a,'->',c)
else:
mov(n-1,a,c,b)
print(a,'->',c)
mov(n-1,b,a,c)
mov(10,'a','b','c')
end = time.time()
print('{:.20f}'.format(end-start))
#输出为:0.01653623580932617188
用time模块的话,用end-start输出的结果是以秒为单位,但由于大多数情况下,程序运行的时间都是以毫秒计算的,如果不精确到小数点的话,显示的结果为0
程序每次运行的时间不一定是固定的,所以每次都会有一定的误差
3.datetime.now()from datetime import datetime
start = datetime.now()
def mov(n,a,b,c):
if n==1:
print(a,'->',c)
else:
mov(n-1,a,c,b)
print(a,'->',c)
mov(n-1,b,a,c)
mov(8,'a','b','c')
end = datetime.now()
print(end-start)
#输出为:0:00:00.015574
作为现在常用的datetimme模块,输出的格式有点不一样,而且常常末尾秒输出的为0
而且还不能精确到小数位
4.timeit.default_timer()import timeit
sta = timeit.default_timer()
def mov(n,a,b,c):
if n==1:
print(a,'->',c)
else:
mov(n-1,a,c,b)
print(a,'->',c)
mov(n-1,b,a,c)
mov(10,'a','b','c')
end = timeit.default_timer()
print('{:.10f}'.format(end-sta))
#输出为:0.0132965000
timeit模块可以精确测量小段代码执行的时间,但每次也会有误差
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)