python性能测量工具cProfile使用解析


Posted in Python onSeptember 26, 2019

背景:

Python是一种解释性的语言,执行速度相比C、C++等语言十分缓慢;因此我们需要在其它地方上下功夫来提高代码的执行速度。

首先需要对代码进行分析,这个时候则需要用一些工具。

这里介绍cProfile:

全代码分析:

命令行:

cProfile -s tottime your_program.py

结果如下:

ncalls tottime percall cumtime percall filename:lineno(function)
  66  0.001  0.000  11.850  0.180 base.py:228(micro_service)
  66  0.003  0.000  11.849  0.180 tools.py:557(micro_service)
 1056  0.001  0.000  11.073  0.010 connection.py:463(drain_events)
 1056  0.015  0.000  11.072  0.010 connection.py:466(blocking_read)
 1056  0.008  0.000  10.920  0.010 transport.py:233(read_frame)
 3168  0.014  0.000  10.908  0.003 transport.py:370(_read)
 3168  10.892  0.003  10.892  0.003 {method 'recv' of '_socket.socket' objects}
  66  0.001  0.000  9.814  0.149 rpc.py:350(__call__)
  66  0.001  0.000  8.395  0.127 rpc.py:329(result)

块分析:

上面属于文件分析,但是我们可能只对部分代码感兴趣,那么只需要在这部分代码的前后加上下面这两段代码即可:

import cProfile
cp = cProfile.Profile()
cp.enable()
YOUR CODE
cp.disable()
cp.print_stats()

结果与全代码分析的类似,但是只包含你感兴趣的部分。

行分析:

行分析需要安装line_profiler:

pip install line_profiler
@profile
def class_name()
	pass

然后在命令行输入:

kernprof -l -v your_code.py
-l 逐行分析
-v 立即查看结果

示例:

from cProfile import Profile as profile 
from pstats import Stats 
def (): 
	p = profile() 
	p.snapshot_stats() 
	p.enable() 
	
	p.disable() 
	p.print_stats(2) # 按照调用累加总耗时累加排序,即将最耗时的函数最优先
	p.dump_stats("call.log")

关于profile和cProfile的更多链接,请点击:

https://docs.python.org/3/library/profile.html?spm=5176.100239.0.0.qa5fU5

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现代码行数统计示例分享
Feb 10 Python
Python实现简单状态框架的方法
Mar 19 Python
Python中title()方法的使用简介
May 20 Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 Python
Python中的条件判断语句基础学习教程
Feb 07 Python
Python实现PS滤镜的万花筒效果示例
Jan 23 Python
计算机二级python学习教程(3) python语言基本数据类型
May 16 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
Jan 03 Python
python 匿名函数与三元运算学习笔记
Oct 23 Python
Python基础之pandas数据合并
Apr 27 Python
python使用socket 先读取长度,在读取报文内容示例
Sep 26 #Python
用python写测试数据文件过程解析
Sep 25 #Python
Python使用grequests(gevent+requests)并发发送请求过程解析
Sep 25 #Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 25 #Python
Python 图像对比度增强的几种方法(小结)
Sep 25 #Python
pyqt5、qtdesigner安装和环境设置教程
Sep 25 #Python
python super的使用方法及实例详解
Sep 25 #Python
You might like
php查询ip所在地的方法
2014/12/05 PHP
PHP微信企业号开发之回调模式开启与用法示例
2017/11/25 PHP
Laravel 实现添加多语言提示信息
2019/10/25 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
在父页面得到zTree已选中的节点的方法
2015/02/12 Javascript
js简单获取表单中单选按钮值的方法
2016/08/23 Javascript
JavaScript中localStorage对象存储方式实例分析
2017/01/12 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
Vue单页及多页应用全局配置404页面实践记录
2018/05/22 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
JavaScript 中 JSON.parse 函数 和 JSON.stringify 函数
2018/12/05 Javascript
详解在HTTPS 项目中使用百度地图 API
2019/04/26 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
Vue实现简易计算器
2020/02/25 Javascript
vue模块移动组件的实现示例
2020/05/20 Javascript
用Python写一个无界面的2048小游戏
2016/05/24 Python
Python进阶_关于命名空间与作用域(详解)
2017/05/29 Python
Python实现随机创建电话号码的方法示例
2018/12/07 Python
Python构建图像分类识别器的方法
2019/01/12 Python
如何使用pandas读取txt文件中指定的列(有无标题)
2020/03/05 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
加拿大休闲和工业服装和鞋类零售商:L’Équipeur
2018/01/12 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
2014年开学第一课活动方案
2014/03/06 职场文书
小学生倡议书范文
2014/05/13 职场文书
机械工程师岗位职责
2014/06/16 职场文书
运动会闭幕词
2015/01/28 职场文书
表扬信格式模板
2015/05/05 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
比较node.js和Deno
2021/04/27 Javascript
忆童年!用Python实现愤怒的小鸟游戏
2021/06/07 Python
用JS实现飞机大战小游戏
2021/06/09 Javascript
浅谈MySQL中的六种日志
2022/03/23 MySQL