Quantcast
Channel: CodeSection,代码区,Python开发技术文章_教程 - CodeSec
Viewing all articles
Browse latest Browse all 9596

Python性能分析工具简介

$
0
0
python性能分析工具简介

一点号复旦大数据昨天

总会遇到一个时候你会想提高程序执行效率,想看看哪部分耗时长成为瓶颈,想知道程序运行时内存和CPU使用情况。这时候你会需要一些方法对程序进行性能分析和调优。

By Context Manager

可以上下文管理器自己实现一个计时器, 参见之前的介绍 timeit 文章里做的那样,通过定义类的 __enter__ 和 __exit__ 方法来实现对管理的函数计时, 类似如:


php?url=0F1suOyRDO" alt="Python性能分析工具简介" />

使用方式如下:


Python性能分析工具简介
By Decorator

然而我认为装饰器的方式更加优雅


Python性能分析工具简介
Python性能分析工具简介

上面的结果说明: 执行脚本消耗0.79sCPU时间, 0.18秒执行内核函数消耗的时间,总共0.977s时间。

其中, total时间 - (user时间 + system时间) = 消耗在输入输出和系统执行其它任务消耗的时间

直接看带注释的使用示例吧。


Python性能分析工具简介
Python性能分析工具简介

cProfile将分析的结果保存到result.out文件中,但是以二进制形式存储的,想直接查看的话用提供的 pstats 来查看。


Python性能分析工具简介
Python性能分析工具简介

cProfile还提供了可以自定义的类,可以更精细的分析, 具体看文档。

格式如: class profile.Profile(timer=None, timeunit=0.0, subcalls=True, builtins=True)

下面这个例子来自官方文档:


Python性能分析工具简介

line_profiler是一个对函数进行逐行性能分析的工具,可以参见github项目说明,地址: https://github.com/rkern/line_profiler

示例


Python性能分析工具简介
Python性能分析工具简介

通过 kernprof 命令来注入分析,运行结果如下:


Python性能分析工具简介

hits(执行次数) 和 time(耗时) 值高的地方是有比较大优化空间的地方。

类似于”line_profiler“对基于行分析程序内存使用情况的模块。github 地址:https://github.com/fabianp/memory_profiler 。ps:安装 psutil, 会分析的更快。

同样是上面”lineprofiler“中的代码,运行 python -m memory_profiler profile.py 命令生成结果如下:


Python性能分析工具简介

回复下列数字即可获得相应干货下载:

1:一百多篇大数据文档下载!

2:超全数据分析资料免费下载!(包括SQL,R语言,SPSS,SAS,python,数据分析和数据挖掘)

3:清华大学数据科学院讲座内容集锦免费下载!

4:20G!超全数据分析 视频 教程免费下载!(包括R语言,SPSS,统计学基础,excel,数据挖掘,医学统计)

5:Python超全资料分享!


Viewing all articles
Browse latest Browse all 9596

Trending Articles