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 01 Python
查看Python安装路径以及安装包路径小技巧
Apr 28 Python
Python中exit、return、sys.exit()等使用实例和区别
May 28 Python
python中使用正则表达式的后向搜索肯定模式(推荐)
Nov 11 Python
Win10下python3.5和python2.7环境变量配置教程
Sep 18 Python
Python实现截取PDF文件中的几页代码实例
Mar 11 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
PyTorch 解决Dataset和Dataloader遇到的问题
Jan 08 Python
python多线程实现代码(模拟银行服务操作流程)
Jan 13 Python
Python selenium模块实现定位过程解析
Jul 09 Python
Python调用Redis的示例代码
Nov 24 Python
python实现的人脸识别打卡系统
May 08 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模拟asp中的XmlHttpRequest实现http请求的代码
2011/03/24 PHP
PHP自动识别字符集并完成转码详解
2013/08/02 PHP
php操作xml
2013/10/27 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
一个简单安全的PHP验证码类 附调用方法
2016/06/24 PHP
Laravel框架Eloquent ORM删除数据操作示例
2019/12/03 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
js阻止事件追加的具体实现
2014/10/15 Javascript
JS实现的网页倒计时数字时钟效果
2015/03/02 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
jquery+ajax实现注册实时验证实例详解
2015/12/08 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
2016/04/05 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
JS中去掉array中重复元素的方法
2017/05/26 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
JS实现静态页面搜索并高亮显示功能完整示例
2017/09/19 Javascript
详解webpack提取第三方库的正确姿势
2017/12/22 Javascript
Node.js利用console输出日志文件的方法示例
2018/04/27 Javascript
使用vue-cli3 创建vue项目并配置VS Code 自动代码格式化 vue语法高亮问题
2019/05/14 Javascript
JS模拟实现京东快递单号查询
2020/11/30 Javascript
[01:15:29]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#2Secret VS EG第三局
2016/03/04 DOTA
python matplotlib 注释文本箭头简单代码示例
2018/01/08 Python
在Pycharm中自动添加时间日期作者等信息的方法
2019/01/16 Python
如何用Python来理一理红楼梦里的那些关系
2019/08/14 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Django之路由层的实现
2019/09/09 Python
pygame实现贪吃蛇游戏(下)
2019/10/29 Python
Python 一行代码能实现丧心病狂的功能
2020/01/18 Python
在python中logger setlevel没有生效的解决
2020/02/21 Python
python语言的优势是什么
2020/06/17 Python
华润集团网上药店:健一网
2016/09/19 全球购物
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
2014年最新个人对照检查材料范文
2014/09/25 职场文书
房屋转让协议书
2014/10/18 职场文书