Python 性能分析之每行耗时 line_profiler

大家都知道,Python 的运算性能不是很强,所以才有了那么多用 C/C++ 来计算的第三方 Python 包,还有各种各样的加速实践。

那么,应该加速哪些代码呢?我之前一般用自带的 cProfile,然而它的输出确实不是太好看,夹杂了非常多无用的信息。

最近才发现了 line_profiler 这个第三方扩展,用起来比 cProfile 直观很多。

安装

安装需要编译器。如果在 Windows 平台,可以在 这里 下载别人编译好的 .whl 安装包,可以自行先安装 C++ 编译器。在 Linux/Mac 上面就简单很多。

使用

在需要 profile 的函数前,加上”@profile”,例如下面的 xxxxxx.py:

这个”@profile”只是一个标记,不是 Python 的语句,所以会导致代码不能直接运行,只能用专门的方法运行,这不是太方便(目前的版本是这样)。

经过一点使用,发现它不可以是 class,但是可以是 class 的方法;子函数也可以用;并且可以同时 profile 多个函数 。

然后,运行:

我们就得到了结果:

就知道应该着重优化哪部分了。

参考

1. https://github.com/rkern/line_profiler


发表评论

验证码 *