性能分析工具

Python性能分析指南 性能分析实践

分析一个程序的性能可以归结为回答4个基本的问题:

1.它运行的有多块? 2.那里是速度的瓶颈? 3.它使用了多少内存? 4.哪里发生了内存泄漏?

Unix time 命令

/usr/bin/time -p python julia1_nopil.py /usr/bin/time --verbose python julia1_nopil.py

timeit

python -m timeit -n 5 -r 5

对于要长期运行的代码来说,最好指定循环次数(-n 5)以及重复次数(-r 5)。timeit 会对语句循环执行 n 次并计算平均值作为一个结果,重复 r 次并选出最好的那个结果

time.time()


分析器逐行统计时间和执行频率 line_profiler 库

@profile装饰器

kernprof -l -v fib.py

-l选项通知kernprof注入@profile装饰器到你的脚步的内建函数,-v选项通知kernprof在脚本执行完毕的时候显示计时信息。上述脚本的输出看起来像这样:

寻找具有高Hits值或高Time值的行。这些就是可以通过优化带来最大改善的地方。

内存分析 memory_profiler 库

@profile装饰器 python -m memory_profiler primes.py



内存泄漏 objgraph 库

显示占据python程序内存的头N个对象 显示一段时间以后哪些对象被删除活增加了 在我们的脚本中显示某个给定对象的所有引用