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 将字符串转换成字典dict
Mar 24 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
Python模拟随机游走图形效果示例
Feb 06 Python
使用python将大量数据导出到Excel中的小技巧分享
Jun 14 Python
PyQt5 加载图片和文本文件的实例
Jun 14 Python
Python考拉兹猜想输出序列代码实践
Jul 05 Python
python飞机大战pygame游戏之敌机出场实现方法详解
Dec 17 Python
Pycharm小白级简单使用教程
Jan 08 Python
python tkinter GUI绘制,以及点击更新显示图片代码
Mar 14 Python
Python datetime模块使用方法小结
Jun 18 Python
Django如何与Ajax交互
Apr 29 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
ajax 的post方法实例(带循环)
2011/07/04 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
利用php绘制饼状图的实现代码
2013/06/07 PHP
php实现用于删除整个目录的递归函数
2015/03/16 PHP
laravel中短信发送验证码的实现方法
2018/04/25 PHP
Yaf框架封装的MySQL数据库操作示例
2019/03/06 PHP
PHP 结合 Boostrap 结合 js 实现学生列表删除编辑及搜索功能
2019/05/21 PHP
filters.revealTrans.Transition使用方法小结
2010/08/19 Javascript
JS 有趣的eval优化输入验证实例代码
2013/09/22 Javascript
使用jQuery解决IE与FireFox下createElement方法的差异
2013/11/14 Javascript
jquery的父子兄弟节点查找示例代码
2014/03/03 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
2014/05/27 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
详解如何构建Promise队列实现异步函数顺序执行
2018/10/23 Javascript
vue使用axios上传文件(FormData)的方法
2019/04/14 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
js使用cookie实现记住用户名功能示例
2019/06/13 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
js实现简单进度条效果
2020/03/25 Javascript
Python线程中对join方法的运用的教程
2015/04/09 Python
Pycharm 设置自定义背景颜色的图文教程
2018/05/23 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
使用pycharm设置控制台不换行的操作方法
2019/01/19 Python
scrapy头部修改的方法详解
2020/12/06 Python
python实现发送邮件
2021/03/02 Python
纽约21世纪百货官网:Century 21
2016/08/27 全球购物
什么是makefile? 如何编写makefile?
2013/01/02 面试题
结婚典礼证婚词
2014/01/11 职场文书
《孔子游春》教学反思
2014/02/25 职场文书
股权转让协议书
2014/04/12 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
中文专业毕业生自荐信
2014/05/24 职场文书
先进员工获奖感言
2014/08/14 职场文书
出国留学单位推荐信
2015/03/26 职场文书
搬迁通知
2015/04/20 职场文书
Oracle以逗号分隔的字符串拆分为多行数据实例详解
2021/07/16 Oracle