Python性能分析 (Profiling)
来源:互联网 发布:字体模仿软件 编辑:程序博客网 时间:2024/04/29 08:13
此页由Linux Wiki用户Chenxing于2012年3月21日 (星期三) 07:02的最后更改。
提示:此文已超过 2 年(960 天)未更新,如发现内容过时或有误,欢迎改进:)
性能分析(Profiling)可用于分析程序的运行时间主要消耗在何处,以便有效优化程序的运行效率。
Profiling可分为两步,一是运行程序收集程序不同部分运行时间的数据,二是数据的可视化和分析。
提示:
本文介绍的方法主要针对类Linux系统,部分工具在Windows等系统可能也能使用。
本文介绍的方法主要针对类Linux系统,部分工具在Windows等系统可能也能使用。
目录
[隐藏]- 1 Python Profiling数据采集
- 1.1 cProfile
- 1.2 hotshot
- 2 数据可视化
- 2.1 Gprof2Dot
- 2.2 Run Snake Run
- 2.3 KCacheGrind
- 3 参考资料
Python Profiling数据采集
cProfile
Python的cProfile模块可用于数据采集,适用于Python 2和Python 3。其调用方法很简单:
import cProfile# 以下调用将运行函数somefunc(),并将相关数据记录到log_file.pyprofcProfile.run('somefunc()', 'log_file.pyprof')
更多信息请参考Python Profiler文档。
有些小程序也可以直接从命令行调用cProfile模块执行[1]:
python -m cProfile -o profile_data.pyprof script_to_profile.py
hotshot
hotshot是高性能的Profiling数据采集工具,其运行时对程序效率的影响很小,但会产生巨大的运行记录,分析也比较慢。[2] Python 3中没有hotshot。故如无特殊需求,请使用cProfile。
import hotshotprofiler = hotshot.Profile("hotshot.log")profiler.run('trackStereo.solveStereoNew()')
数据可视化
Gprof2Dot
Gprof2Dot可将多种Profiler的数据转成Graphviz可处理的图像表述。配合dot命令,即可得到不同函数所消耗的时间分析图。以处理cProfile的记录为例[3]:
# 运行程序记录数据:# python -m cProfile -o profile_data.pyprof path/to/your/script arg1 arg2 # profile_data.pyprof是获取的数据;dot命令需要安装Graphviz才能用gprof2dot.py -f pstats profile_data.pyprof | dot -Tpng -o output.png
Run Snake Run
RunSnakeRun是个Python脚本,使用wxPython将Profiler数据可视化,效果如图。
RunSnakeRun还可分析内存占用,但仍处于实验阶段。[4]
KCacheGrind
KCacheGrind是Linux中常用的profiling visualization软件,其默认可处理valgrind的输出。通过一些脚本也可以让其分析cProfile或hotshot记录下的数据。
处理cProfile的数据可使用pyprof2calltree:
# 运行程序记录数据:# python -m cProfile -o profile_data.pyprof path/to/your/script arg1 arg2 # 使用pyprof2calltree处理数据并自动调用KCacheGrindpyprof2calltree -i profile_data.pyprof -k
处理hotshot的数据可使用KCacheGrind中的hotshot2calltree命令:
# 使用hotshot2calltree处理数据,完成后需手动在KCacheGrind中打开输出文件hotshot2calltree hotshot.log -o hs_calltree.log
注意:
KCacheGrind虽然功能强大,但其输出的分析树似乎并不完整,如果您了解原因,请补充。
KCacheGrind虽然功能强大,但其输出的分析树似乎并不完整,如果您了解原因,请补充。
参考资料
- ↑ StackOverflow: Using cProfile results with KCacheGrind
- ↑ Python官方文档:hotshot
- ↑ Gprof2Dot
- ↑ RunSnakeRun
0 0
- Python性能分析 (Profiling)
- Profiling 性能分析
- U3D性能分析 Profiling
- 程序性能分析profiling
- Mysql中Profiling之性能分析
- Mysql中Profiling之性能分析
- Mysql自带profiling性能分析工具
- Mysql自带profiling性能分析工具
- MYSQL性能分析工具 show profiling
- Unity3D-性能优化最佳实践(一)分析(Profiling)
- mysql使用Profiling分析query语句,sql语句性能优化
- Java性能监测Profiling
- android 分析method profiling
- 性能-MySQL Profiling 的使用
- mysql性能优化之profiling
- Python性能分析工具
- Python性能分析指南
- Python性能分析指南
- Phalcon学习-model
- JSF笔记 – JSF中的EL表达式语言支持
- 第十一周项目五:这是第几天
- 虹膜识别(四):hough变换检测外圆
- 关于android中px,dip,dp,sp等单位
- Python性能分析 (Profiling)
- Linux date格式化输出时间和日期
- LINUX 下安装软件方法命令方法
- JSON的一些转换和技巧
- ubuntu安装显卡驱动
- 纠结的人生,纠结的工作
- 获取前一天日期的方法
- 预处理器2
- mContext.startActivity(intent)失败原因分析