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使用rabbitmq实现网络爬虫示例
Feb 20 Python
Python切换pip安装源的方法详解
Nov 18 Python
Python Paramiko模块的使用实际案例
Feb 01 Python
python使用zip将list转为json的方法
Dec 31 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
解决Atom安装Hydrogen无法运行python3的问题
Aug 28 Python
Python pandas实现excel工作表合并功能详解
Aug 29 Python
Python编程快速上手——PDF文件操作案例分析
Feb 28 Python
python批量替换文件名中的共同字符实例
Mar 05 Python
ffmpeg+Python实现B站MP4格式音频与视频的合并示例代码
Oct 21 Python
python 对一幅灰度图像进行直方图均衡化
Oct 27 Python
Python常用断言函数实例汇总
Nov 30 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下连接ftp实现文件的上传、下载、删除文件实例代码
2010/06/03 PHP
php下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
js 表格隔行颜色
2009/12/02 Javascript
基于JQuery.timer插件实现一个计时器
2010/04/25 Javascript
网站页面自动跳转实现方法PHP、JSP(下)
2010/08/01 Javascript
jquery 插件学习(一)
2012/08/06 Javascript
jquery js 获取时间差、时间格式具体代码
2013/06/05 Javascript
js操作IE浏览器弹出浏览文件夹可以返回目录路径
2014/07/14 Javascript
JavaScript中的console.profile()函数详细介绍
2014/12/29 Javascript
分享9个最好用的JavaScript开发工具和代码编辑器
2015/03/24 Javascript
JavaScript的ExtJS框架中数面板TreePanel的使用实例解析
2016/05/21 Javascript
JavaScript中的事件委托及好处
2016/07/12 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
使用JS在浏览器中判断当前网络连接状态的几种方法
2017/05/05 Javascript
JavaScript中各数制转换全面总结
2017/08/21 Javascript
vue组件之Alert的实现代码
2017/10/17 Javascript
Vue Cli3 创建项目的方法步骤
2018/10/15 Javascript
Selenium执行JavaScript脚本的方法示例
2020/12/31 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
python 如何快速找出两个电子表中数据的差异
2017/05/26 Python
python 中random模块的常用方法总结
2017/07/08 Python
关于pymysql模块的使用以及代码详解
2019/09/01 Python
Python按照list dict key进行排序过程解析
2020/04/04 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
【HTML5】3D模型--百行代码实现旋转立体魔方实例
2016/12/16 HTML / CSS
详解html5页面 rem 布局适配方法
2018/01/12 HTML / CSS
HTML5拖拽功能实现的拼图游戏
2018/07/31 HTML / CSS
GAP欧盟网上商店:GAP EU
2016/09/13 全球购物
软件测试面试题
2014/01/05 面试题
金融专业应届生求职信
2013/11/02 职场文书
市场总经理岗位职责
2014/04/11 职场文书
企业趣味活动方案
2014/08/21 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
python中__slots__节约内存的具体做法
2021/07/04 Python
JVM的类加载器和双亲委派模式你了解吗
2022/03/13 Java/Android