成都网站建设设计

将想法与焦点和您一起共享

如何进行PythonProfiling性能分析

这期内容当中小编将会给大家带来有关 如何进行Python Profiling性能分析 ,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

禹会ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:028-86922220(备注:SSL证书合作)期待与您的合作!

性能分析(Profiling)可用于分析程序的运行时间主要消耗在何处,以便有效优化程序的运行效率。

Profiling可分为两步,一是运行程序收集程序不同部分运行时间的数据,二是数据的可视化和分析。

如何进行Python Profiling性能分析  

提示:   
下面介绍的方法主要针对类Linux系统,部分工具在Windows等系统  可能也能使用。

cProfilePython Profiling数据采集

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

如何进行Python Profiling性能分析  

如何进行Python Profiling性能分析

Gprof2Dot的输出,经dot命令渲染后的图片。

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

如何进行Python Profiling性能分析  

如何进行Python Profiling性能分析

Run Snake Run截图

RunSnakeRun是个Python脚本,使用wxPython将Profiler数据可视化,效果如图。

RunSnakeRun还可分析内存占用,但仍处于实验阶段。[4]

KCacheGrind

如何进行Python Profiling性能分析  

如何进行Python Profiling性能分析

KCacheGrind可视化Python运行时数据

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

如何进行Python Profiling性能分析  

注意:   
KCacheGrind虽然功能强大,但其输出的分析树似乎并不完整,如果您了解原因,请补充。

上述就是小编为大家分享的 如何进行Python Profiling性能分析 了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注创新互联行业资讯频道。


分享名称:如何进行PythonProfiling性能分析
本文链接:http://chengdu.cdxwcx.cn/article/jojied.html