代码的执行性能是程序员需要特别关注的一个点,市面上有很多检测监控python代码执行性能的工具,但是都过于笨重,这里推荐一个更加轻量,粒度更细的性能测试工具包——line_profiler。
原理与安装
line_profiler作为一个性能测试工具来说是很轻便的,安装也很简单,正常pip安装即可
pip install line_profiler
安装完成后不需要做额外的过多操作,只需要在要测试的方法之上添加一个@profile装饰器。在程序执行时就会自动将测试代码带入测试程序中进行性能测试。
功能测试
这里简单的用一段测试代码测试下,新建test_code文件:
@profile
def test_code():
a = []
a.append('1')
a.append('2')
a.append('3')
a.append('4')
a.extend(['4', '5', '6'])
c = ''
for i in a:
c += i
print(c)
if __name__ == '__main__':
test_code()
然后运行测试命令:
kernprof -l -v test_code.py
然后控制台就能看到输出:
1234456
Wrote profile results to test_code.py.lprof
Timer unit: 1e-06 s
Total time: 0.0002404 s
File: test_code.py
Function: test_code at line 3
Line # Hits Time Per Hit % Time Line Contents
==============================================================
3 @profile
4 def test_code():
5 1 2.8 2.8 1.2 a = []
6
7 1 2.5 2.5 1.0 a.append('1')
8 1 1.2 1.2 0.5 a.append('2')
9 1 1.3 1.3 0.5 a.append('3')
10 1 1.2 1.2 0.5 a.append('4')
11
12 1 2.0 2.0 0.8 a.extend(['4', '5', '6'])
13
14 1 0.9 0.9 0.4 c = ''
15 8 7.0 0.9 2.9 for i in a:
16 7 8.0 1.1 3.3 c += i
17 1 213.5 213.5 88.8 print(c)
从输出中可以看到每行代码的耗时以及耗时百分比,可以看到for循环和字符串拼接是比较耗时的,这就是line_profiler的整个使用流程,很简单吧。
版权属于:Jolly
本文链接:https://totoro.site/index.php/archives/123/
关于转载:原创文章,禁止转载