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抽象类的新写法
Jun 18 Python
Python实现字符串逆序输出功能示例
Jun 24 Python
Python实现的FTP通信客户端与服务器端功能示例
Mar 28 Python
Python for循环中的陷阱详解
Jul 13 Python
Python读取系统文件夹内所有文件并统计数量的方法
Oct 23 Python
Python实现批量执行同目录下的py文件方法
Jan 11 Python
一文秒懂python读写csv xml json文件各种骚操作
Jul 04 Python
python模块和包的应用BASE_PATH使用解析
Dec 14 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 Python
Python实现照片卡通化
Dec 06 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
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
Prototype ObjectRange对象学习
2009/07/19 Javascript
利用javascript数组长度循环数组内所有元素
2013/12/27 Javascript
js原生跨域_用script标签的简单实现
2016/09/24 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
2017/01/13 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
关于jquery layui弹出层的使用方法
2018/04/21 jQuery
JS中移除非数字最多保留一位小数
2018/05/09 Javascript
Nginx设置为Node.js的前端服务器方法总结
2019/03/27 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
python线程锁(thread)学习示例
2013/12/04 Python
python抓取网页中的图片示例
2014/02/28 Python
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
python实现根据用户输入从电影网站获取影片信息的方法
2015/04/07 Python
详解Python中的文本处理
2015/04/11 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
详解Python time库的使用
2019/10/10 Python
Python实现计算长方形面积(带参数函数demo)
2020/01/18 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
ajax是什么及其工作原理
2012/02/08 面试题
大学生实习鉴定评语
2014/04/25 职场文书
学校组织向国旗敬礼活动方案(中小学适用)
2014/09/27 职场文书
学生上课说话检讨书
2014/10/25 职场文书
故宫导游词
2015/01/31 职场文书
个人总结怎么写
2015/02/26 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
2015年社区消防安全工作总结
2015/10/14 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python
使用Pytorch实现two-head(多输出)模型的操作
2021/05/28 Python
Redis sentinel哨兵集群的实现步骤
2022/07/15 Redis