python 统计代码耗时的几种方法分享

时间:2021-05-23

时间戳相减

在代码执行前后各记录一个时间点,两个时间戳相减即程序运行耗时。

获取时间戳time.time()

importtimestart_time=time.time()sum=0foriinrange(100000000):sum+=iprint(sum)end_time=time.time()print("耗时:{:.2f}秒".format(end_time-start_time))输出:4999999950000000耗时:10.53秒

获取当前日期 datetime.datetime.now()

importdatetimestart_time=datetime.datetime.now()sum=0foriinrange(100000000):sum+=iprint(sum)end_time=datetime.datetime.now()print("耗时:{}秒".format(end_time-start_time))

装饰器

装饰器是一个装饰函数的函数,能够在不改变函数源码和函数调用方式的情况下给函数增加新的功能。很多时候统计函数的耗时,可以使用装饰器实现。

importtimedefget_time(f):definner(*arg,**kwarg):s_time=time.time()res=f(*arg,**kwarg)e_time=time.time()print('耗时:{}秒'.format(e_time-s_time))returnresreturninner@get_timedeftest():time.sleep(2)#模拟运行2stest()输出:耗时:2.000781536102295秒

timeit模块

timeit 模块提供了测量 Python 小段代码执行时间的方法,可以在命令行界面直接使用,也可以通过导入模块进行调用。

语句执行 number 次的时间

#导入timeit.timeitfromtimeitimporttimeit#看x=1的执行一次的时间(number可以省略,缺省为1000000)t1=timeit('x=1',number=1)print(t1)#一个列表生成器的执行时间,执行10000次:t2=timeit('[iforiinrange(100)ifi%2==0]',number=10000)print(t2)输出:4.0000000001150227e-070.04841430000000002

计算函数的执行时间

fromtimeitimporttimeitdeffunc(a):sum=0foriinrange(a):sum+=ireturnsum#timeit(函数名_字符串,运行环境_字符串,number=运行次数)t=timeit('func(10000000)','from__main__importfunc',number=1)print(t)输出:0.4887406

重复调用 timeit()

repeat() 方法相当于持续多次调用 timeit() 方法并将结果返回为一个列表。repeat 参数指定重复的次数,number 参数传递给 timeit() 方法的 number 参数。

importtimeitdeffunc(a):sum=0foriinrange(a):sum+=ireturnsum#timeit(函数名_字符串,运行环境_字符串,number=运行次数,repeat=重复次数,repeat=5)t=timeit.repeat('func(100000)','from__main__importfunc',number=100,repeat=5)print(t)

cProfile性能分析工具

cProfile(语言编写的测试模块)是一个标准库内建的性能分析工具,可以在标准输出中看到每一个函数被调用的次数和运行的时间,从而找到程序的性能瓶颈,从而有针对性的进行性能优化。

Python代码性能分析之cProfile

importcProfiledeffunc(a):sum=0foriinrange(a):sum+=ireturnsumif__name__=='__main__':cProfile.run("func(10000000)")

以上就是python 统计代码耗时的几种方法分享的详细内容,更多关于python 统计代码耗时的资料请关注其它相关文章!

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章