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开发实例分享bt种子爬虫程序和种子解析
May 21 Python
python多进程操作实例
Nov 21 Python
Python实现简单截取中文字符串的方法
Jun 15 Python
在Python的while循环中使用else以及循环嵌套的用法
Oct 14 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
Python 中的with关键字使用详解
Sep 11 Python
使用urllib库的urlretrieve()方法下载网络文件到本地的方法
Dec 19 Python
使用Python 统计高频字数的方法
Jan 31 Python
详解字符串在Python内部是如何省内存的
Feb 03 Python
Python实现井字棋小游戏
Mar 09 Python
python实现测试工具(二)——简单的ui测试工具
Oct 19 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 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+DBM的同学录程序(5)
2006/10/09 PHP
php 多线程上下文中安全写文件实现代码
2009/12/28 PHP
php $_SERVER windows系统与linux系统下的区别说明
2014/02/14 PHP
PHP base64编码后解码乱码的解决办法
2014/06/19 PHP
php生成二维码时出现中文乱码的解决方法
2014/12/18 PHP
php中file_get_contents()函数用法实例
2019/02/21 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
jquery 注意事项与常用语法小结
2010/06/07 Javascript
用JS控制回车事件的代码
2011/02/20 Javascript
浏览器常用高宽的jquery插件
2011/02/24 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
js中单引号与双引号冲突问题解决方法
2013/10/04 Javascript
jqGrid读取选择的多行的某个属性代码
2014/05/18 Javascript
Angular中的Promise对象($q介绍)
2015/03/03 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
浅谈js常用内置方法和对象
2016/09/24 Javascript
vue实现全匹配搜索列表内容
2019/09/26 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
在vue中使用console.log无效的解决
2020/08/09 Javascript
JavaScript实现alert弹框效果
2020/11/19 Javascript
Python3使用PySynth制作音乐的方法
2019/09/09 Python
python实现批量文件重命名
2019/10/31 Python
python numpy 矩阵堆叠实例
2020/01/17 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
Windows+Anaconda3+PyTorch+PyCharm的安装教程图文详解
2020/04/03 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
python装饰器实现对异常代码出现进行自动监控的实现方法
2020/09/15 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
python pygame 愤怒的小鸟游戏示例代码
2021/02/25 Python
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
单位提档介绍信
2014/01/17 职场文书
开业庆典策划方案
2014/02/18 职场文书
董事长助理岗位职责
2015/02/11 职场文书
Python进度条的使用
2021/05/17 Python
python基础学习之生成器与文件系统知识总结
2021/05/25 Python