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之yield表达式学习
Sep 02 Python
Python使用面向对象方式创建线程实现12306售票系统
Dec 24 Python
Python中文分词实现方法(安装pymmseg)
Jun 14 Python
Python变量和数据类型详解
Feb 15 Python
Python使用pymysql小技巧
Jun 04 Python
python函数的作用域及关键字详解
Aug 20 Python
django框架F&Q 聚合与分组操作示例
Dec 12 Python
python读取raw binary图片并提取统计信息的实例
Jan 09 Python
Pyecharts 动态地图 geo()和map()的安装与用法详解
Mar 25 Python
python能做哪些生活有趣的事情
Sep 09 Python
Python识别验证码的实现示例
Sep 30 Python
Python性能测试工具Locust安装及使用
Dec 01 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
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
最新优化收藏到网摘代码(digg,diigo)
2007/02/07 Javascript
ext checkboxgroup 回填数据解决
2009/08/21 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
《JavaScript DOM 编程艺术》读书笔记之DOM基础
2015/01/09 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
JS实现仿google、百度搜索框输入信息智能提示的实现方法
2015/04/20 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
javascript倒计时效果实现
2015/11/12 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
详解vue-router 2.0 常用基础知识点之导航钩子
2017/05/10 Javascript
详解es6超好用的语法糖Decorator
2018/08/01 Javascript
微信小程序系列之自定义顶部导航功能
2019/05/21 Javascript
[02:25]DOTA2英雄基础教程 熊战士
2014/01/03 DOTA
用Python从零实现贝叶斯分类器的机器学习的教程
2015/03/31 Python
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
Python类的动态修改的实例方法
2017/03/24 Python
Python基础之getpass模块详细介绍
2017/08/10 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
美国复古街头服饰精品店:Need Supply Co.
2017/02/22 全球购物
希腊品牌鞋类销售网站:epapoutsia.gr
2020/03/18 全球购物
办公室文秘自我鉴定
2013/09/21 职场文书
幼儿园教研活动方案
2014/01/19 职场文书
商场端午节活动方案
2014/01/29 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
数控技术学生的自我评价
2014/02/15 职场文书
作文评语集锦大全
2014/04/23 职场文书
教师自我剖析材料范文
2014/09/30 职场文书
投资意向协议书
2015/01/29 职场文书
2015年八一建军节活动总结
2015/03/20 职场文书
五一晚会主持词
2015/07/01 职场文书
2016应届毕业生实习心得体会
2015/10/09 职场文书
Nginx配置https原理及实现过程详解
2021/03/31 Servers
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript