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 域名分析工具实现代码
Jul 15 Python
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
python比较两个列表是否相等的方法
Jul 28 Python
Python实现将xml导入至excel
Nov 20 Python
OpenCV实现人脸识别
Apr 07 Python
Python探索之自定义实现线程池
Oct 27 Python
Python读写/追加excel文件Demo分享
May 03 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
django框架基于queryset和双下划线的跨表查询操作详解
Dec 11 Python
Python关于__name__属性的含义和作用详解
Feb 19 Python
django 前端页面如何实现显示前N条数据
Mar 16 Python
python如何爬取动态网站
Sep 09 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中引用符号(&)的使用详解
2013/11/13 PHP
destoon二次开发常用数据库操作
2014/06/21 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
Laravel学习基础之migrate的使用教程
2017/10/11 PHP
php命令行写shell实例详解
2018/07/19 PHP
Nigma vs Alliance BO5 第五场2.14
2021/03/10 DOTA
JS 毫秒转时间示例代码
2013/09/22 Javascript
教你在heroku云平台上部署Node.js应用
2014/07/30 Javascript
DOM节点的替换或修改函数replaceChild()用法实例
2015/01/12 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
jQuery实现的瀑布流加载效果示例
2016/09/13 Javascript
javascript表单控件实例讲解
2016/09/13 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
浅谈Vue SPA 首屏加载优化实践
2017/12/15 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
谈谈为什么你的 JavaScript 代码如此冗长
2019/01/30 Javascript
详解ES7 Decorator 入门解析
2019/02/18 Javascript
python文件操作相关知识点总结整理
2016/02/22 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
HTML5 Canvas鼠标与键盘事件demo示例
2013/07/04 HTML / CSS
HTML5 Canvas之测试浏览器是否支持Canvas的方法
2015/01/01 HTML / CSS
美国宠物商店:Wag.com
2016/10/25 全球购物
英国领先的奢侈品零售商之一:CRUISE
2016/12/02 全球购物
美国网上购买眼镜:Eyeconic
2017/07/29 全球购物
性能服装:HYLETE
2018/08/14 全球购物
NYX Professional Makeup英国官网:美国平价专业彩妆品牌
2019/11/13 全球购物
好的自荐信的要求
2013/10/30 职场文书
应用化学专业职业生涯规划书
2013/12/31 职场文书
教师党性分析材料
2014/02/04 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
2014年纳税评估工作总结
2014/12/23 职场文书
导游词格式
2015/02/13 职场文书
2016寒假假期总结
2015/10/10 职场文书
Moment的feature导致线上bug解决分析
2022/09/23 Javascript