python 逐行分析代码运行时间 LineProfiler

本文介绍了如何使用LineProfiler模块来分析Python代码的运行时间,包括添加需要检测的函数、启用检测、运行代码并打印逐行时间,以及保存和解析分析结果。
摘要由CSDN通过智能技术生成

使用LineProfiler,可显示每行代码的运行时间,以及时间占比,也可分析总的运行时间,。

首先,导入所需的模块:

from line_profiler import LineProfiler

然后,确定需要分析的代码

# 假设之前已经创建了MyClass,并且定义了my_method以及其他用到的函数,下面开始分析过程

# analyze the code performance
profiler = LineProfiler() # 创建LineProfiler对象
profiler.add_function(MyClass.my_method)
# 上面这一句是添加要分析的函数,这里不需要给出参数,也不实际运行函数,如果还想检测其他的函数或者方法,在下面接着add就可以,比如下面这两行。
profiler.add_function(funcition_1)
profiler.add_function(funcition_2)
profiler.enable_by_count() # 使能检测
MyClass.my_method(para1, para2) # 这一句相当于调用函数/方法,运行功能,进行逐行的检测。
profiler.disable_by_count() # 检测结束
profiler.print_stats() # 打印每一行的时间。

注意:打印的内容中包括MyClass.my_method(para1, para2)每行的运行时间,也包括add_function的函数的每行运行时间。

但是如果add_function中对应的函数/方法,在profiler.enable_by_count()与profiler.disable_by_count()之间的MyClass.my_method(para1, para2)这一行的运行过程中没有实际被调用,只是被增加到了add_function中,那么其实打印出来是没有时间的。


如果想逐行显示MyClass.my_method(para1, para2)执行过程中被调用的函数/方法的每一行的运行时间,把方法或者函数的名称增加到add_function中即可。

总结:

实际上,只要保证你想逐行看时间的函数/方法既被增加到了add_function中,并且也在profiler.enable_by_count()与profiler.disable_by_count()之间的部分中被调用,就可以看到逐行运行的时间。

保存line_profiler的结果:

(1)在代码最后加上:profiler.dump_stats('line_profiler_results.lprof'),将结果存储到lprof文件中

(2)在终端中输入命令行,解析lprof文件内容存储到txt文件中:

python -m line_profiler line_profiler_results.lprof > results.txt

line_profiler的输出结果解释:

https://www.cnblogs.com/tian777/p/17785674.html

代码运行的可视化分析:

https://medium.com/@narenandu/profiling-and-visualization-tools-in-python-89a46f578989

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小哇123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值