开发者学堂课程【Python 入门 2020年版:计算代码的执行时长】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/639/detail/10347
计算代码的执行时长
内容介绍:
一、 计算代码的执行时长
二、 优化计算时间的代码
一、计算代码的执行的时间
1、x
=1
for i in range
(1,1
00000000
)
x
+=1
print(x)
这个代码的执行时间是有点长的,具体花了多久是可以计算出来的。在这个代码运行之前,先获取一下时间,然后在这个代码运行完成以后,再获取一下时间,拿到这两个时间之后做减法就行了。
2、获取当前的时间。time 模块可以获取当前的时间,
impo
rt time
start=time.time()
time 模块里的 time 方法可以获取当前时间的时间戳,打印一下 start:print(
‘start=’,start)
执行的结果是 start=1582251025.9523343,时间戳是从1970-01-01 00:00:00 UTC 到现在的秒数,是一个秒级的计算。
要以 UTC 为准,也就是0时区,中国是在东八区,要准换成 UTC 时间才能算出来。
再拿到 end 时间,用 end-start,这样就能获得代码执行的时间
end
=time.time()
print(
‘代码运行耗时{
}
秒’,format(
end-start))
刚输入代码的时候算一下1970年1月1号到现在多长时间,代码运行后再算1970年1月1号到现在又有多长时间,相减就是执行的时间。
二、优化计算时间的代码
1、impo
rt time
start=time.time()
x
=1
for i in range
(1,1
00000000
)
x
+=1
print(x)
end
=time.time()
print(
‘代码运行耗时{
}
秒’,format(
end-start))
代码虽然写完了,但是有一些地方不够好,需要优化一下。重新写一个代码,计算这个新的代码执行了多长时间。
start=time.time()
print('hello')
time.sleep(3)
print('world')
end =time.time()
print('代码运行耗时{}秒'.format(end-start))
运行一下就能得到时间,这个代码运行了三秒多一点,主要的时间就在睡眠上了,打印 hello 和 word 基本上不花时间。
有一段代码,它能够不断地计算这个代码的执行时间,如果又来了一个代码,要计算它的执行时间,又得把 start 和 end 写一遍,写完了之后,再把要执行的代码放到中间来,代码的重复率太高了。
2、现在可以考虑写一个函数,固定的可以以参数的形式来写,只有中间的代码是变化的,start 和 end 是不变的。
如果是一个代码变了,再传一个参数就行了,一段代码也给它传参,只不过不是一个普通的参数,要把这一段函数封装成一个函数。
这里需要一个 fn,现在把这个 fn 给运行一下,想计算 demo 执行的时间,写个cal_time(),把 demo 放进去,注意 demo 后面不能加括号,应该把 demo 这个函数传给这个 fn,然后再调。
def cal_time(fn):
start= time.time()
fn()
end =time.time()
print('代码运行耗时(小秒'.format(end- start))
def demo():
x=0
for i in range(1,100000000):
x +=i
print(x)
3、如果再有一个函数,还想计算一下它的时长,可以直接调一下 cal time 把这个函数传进去,就行了。
def foo():
print('hello')
time.sleep(3)
print('world')
cal_time(demo
)
cal time(foo)
这个地方它就能够算出代码的执行时间,运行的时间会有误差,但是都是毫秒级的,基本上可以忽略不计,如果真的要算的话,得算很多次,进行很多次统计,然后求分布的值和平均值。