什么是line_profiler
用惯了MATLAB的人转移到Python上,优化程序的第一步应该就是找profile。Python的确内置profiler,有两种:profile和cProfile,一个是Python写的,另一个是用C写的扩展。自带的profiler输出结果较为完善,各个内建函数也都包含在内,但对于不那么熟悉Python内建函数的新手来讲,通过自带profiler去优化一段程序很难完成。
有一些现成的第三方包给内置profiler的输出文件做了扩展,可将其调用过程展示在GUI里,但无论如何还是没有每行代码单独统计时间来的方便。就算知道某个内建函数费时较多,但为了优化程序,还需找出调用此内建函数的语句,所以很有可能出现一个你的函数调用了一个内建函数,而它又调用了另一个内建函数,这就使得整个程序优化过程十分繁琐。
line_profiler很好的解决了这个问题,其输出结果就如同MATLAB中profile的输出结果,按照每行代码统计耗时以及调用次数。可从github上下载,其页面上有很详细的使用说明,这里就不介绍其使用方法。下载页面:
line_profiler增强
学会使用line_profiler后,发现其优化方式方便是方便,但对于函数很多的大段程序,或者对于包含很多方法的自建类的优化就没那么方便了。因为要使用line_profiler,需要再你想要time的函数前一行增加