怎样算python代码耗时是多少?
Admin 2021-05-22 群英技术资讯 2127 次浏览
如何计算python代码耗时是多少?一些Python新手不太清楚要怎样统计python代码耗时,文本就给大家介绍几种方法,时间戳相减、装饰器、timeit模块、重复调用 timeit()和cProfile性能分析工具。下面我们一起来具体看看吧。
在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。
获取时间戳time.time()
import time
start_time = time.time()
sum = 0
for i in range(100000000):
sum += i
print(sum)
end_time = time.time()
print("耗时: {:.2f}秒".format(end_time - start_time))
输出:
4999999950000000
耗时: 10.53秒
获取当前日期 datetime.datetime.now()
import datetime
start_time = datetime.datetime.now()
sum = 0
for i in range(100000000):
sum += i
print(sum)
end_time = datetime.datetime.now()
print("耗时: {}秒".format(end_time - start_time))
装饰器是一个装饰函数的函数,能够在不改变函数源码和函数调用方式的情况下给函数增加新的功能。很多时候统计函数的耗时,可以使用装饰器实现。
import time
def get_time(f):
def inner(*arg,**kwarg):
s_time = time.time()
res = f(*arg,**kwarg)
e_time = time.time()
print('耗时:{}秒'.format(e_time - s_time))
return res
return inner
@get_time
def test():
time.sleep(2) # 模拟运行2s
test()
输出:
耗时:2.000781536102295秒
timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接使用,也可以通过导入模块进行调用。
语句执行 number 次的时间
#导入timeit.timeit
from timeit import timeit
#看x=1的执行一次的时间(number可以省略,缺省为1000000)
t1 = timeit('x=1', number=1)
print(t1)
#一个列表生成器的执行时间,执行10000次:
t2 = timeit('[i for i in range(100) if i%2==0]', number=10000)
print(t2)
输出:
4.0000000001150227e-07
0.04841430000000002
计算函数的执行时间
from timeit import timeit
def func(a):
sum = 0
for i in range(a):
sum += i
return sum
# timeit(函数名_字符串,运行环境_字符串,number=运行次数)
t = timeit('func(10000000)', 'from __main__ import func', number=1)
print(t)
输出:
0.4887406
repeat() 方法相当于持续多次调用 timeit() 方法并将结果返回为一个列表。repeat 参数指定重复的次数,number 参数传递给 timeit() 方法的 number 参数。
import timeit
def func(a):
sum = 0
for i in range(a):
sum += i
return sum
# timeit(函数名_字符串,运行环境_字符串,number=运行次数,repeat=重复次数,repeat=5)
t = timeit.repeat('func(100000)', 'from __main__ import func', number=100, repeat=5)
print(t)
cProfile(语言编写的测试模块)是一个标准库内建的性能分析工具,可以在标准输出中看到每一个函数被调用的次数和运行的时间,从而找到程序的性能瓶颈,从而有针对性的进行性能优化。
Python代码性能分析之cProfile
import cProfile
def func(a):
sum = 0
for i in range(a):
sum += i
return sum
if __name__ == '__main__':
cProfile.run("func(10000000)")

关于统计python代码耗时的发布方法就分享到这,需要的朋友可以参考学习,希望对大家有帮助,更多python相关内容可以关注其他文章。
文本转载自脚本之家
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
Python内置函数-frozenset() 函数。frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
大家在写 Python 代码的时候有没有这样的疑问。为什么数学中的+号,在字符串运算中却变成拼接功能,如'ab' + 'cd'结果为abcd;而*号变成了重复功能,如'ab' * 2结果为abab。为什么某些对象print能输出数据,而print自定义的类对象却输出一堆看不懂的代码<__main__.MyCls object at 0x105732250>。
这篇文章主要介绍了关于matplotlib及相关cmap参数的取值方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
怎样用python实现不是标准时间的转换?时间转换的需求还是比较常见的,很多新手可能对准时间的转换比较了解,但是不是很清楚非标准时间转换的实现,因此下文就给大家来介绍一下。
根据某些规则,将内存数据保存到文件中时,文件是字节序列,因此必须将内存数据转换为字节序列,然后输出到文件,这就是序列化;反之,从文件的字节恢复到内存中时,则是反序列化;
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008