使用memory_profiler监测python代码运行时内存消耗方法


Posted in Python onDecember 03, 2018

前几天一直在寻找能够输出python函数运行时最大内存消耗的方式,看了一堆的博客和知乎,也尝试了很多方法,最后选择使用memory_profiler中的mprof功能来进行测量的,它的原理是在代码运行过程中每0.1S统计一次内存,并生成统计图。

具体的使用方式如下:

首先安装memory_profiler和psutil(psutil主要用于提高memory_profile的性能,建议安装)(可使用pip直接安装)

pip install memory_profiler 
pip install psutil

具体运行方式为如下:(在待检测代码所在目录中打开命令行运行如下代码)

mprof run test.py

结果会生成一个.dat文件,如”mprofile_20160716170529.dat”,里面记录了内存随时间的变化

mprof plot

使用该命令以图片的形式展示出来

如果在运行的时候出现如下的gbk解码错误,解决方案是首先进入 memory_profiler.py文件中,找到第1131行,

把with open(filename) as f: 更改成 with open(filename, encoding='utf-8') as f:!!!

UnicodeDecodeError: ‘gbk' codec can't decode byte 0xad in position 337: illegal multibyte sequence

使用memory_profiler监测python代码运行时内存消耗方法

使用memory_profiler监测python代码运行时内存消耗方法

值得注意的是,尽管网上大部分都说在待检测的函数之前加上@profile修饰器,但是不知道为何我在anaconda python3.6的环境里始终加不上这个修饰器,强行加上就报错,没加上也没问题。

Python 相关文章推荐
使用C语言来扩展Python程序和Zope服务器的教程
Apr 14 Python
利用Python学习RabbitMQ消息队列
Nov 30 Python
python的numpy模块安装不成功简单解决方法总结
Dec 23 Python
Django中在xadmin中集成DjangoUeditor过程详解
Jul 24 Python
python求平均数、方差、中位数的例子
Aug 22 Python
基于Python词云分析政府工作报告关键词
Jun 02 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
python virtualenv虚拟环境配置与使用教程详解
Jul 13 Python
Python描述数据结构学习之哈夫曼树篇
Sep 07 Python
Scrapy爬虫文件批量运行的实现
Sep 30 Python
Django基于Models定制Admin后台实现过程解析
Nov 11 Python
selenium+超级鹰实现模拟登录12306
Jan 24 Python
浅谈pycharm的xmx和xms设置方法
Dec 03 #Python
解决Python运行文件出现out of memory框的问题
Dec 03 #Python
Python装饰器简单用法实例小结
Dec 03 #Python
浅谈pycharm出现卡顿的解决方法
Dec 03 #Python
利用Python实现原创工具的Logo与Help
Dec 03 #Python
对pycharm 修改程序运行所需内存详解
Dec 03 #Python
浅谈pycharm下找不到sqlalchemy的问题
Dec 03 #Python
You might like
php使用NumberFormatter格式化货币的方法
2015/03/21 PHP
在WordPress的后台中添加顶级菜单和子菜单的函数详解
2016/01/11 PHP
PHP中$GLOBALS与global的区别详解
2019/03/21 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
收集的一些Array及String原型对象的扩展实现代码
2010/12/05 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
使用GruntJS构建Web程序之合并压缩篇
2014/06/06 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
node.js中的fs.createReadStream方法使用说明
2014/12/17 Javascript
JavaScript日期时间与时间戳的转换函数分享
2015/01/31 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
快速掌握Node.js环境的安装与运行方法
2016/02/16 Javascript
jQuery密码强度验证控件使用详解
2017/01/05 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
vue实现全选、反选功能
2020/11/17 Javascript
[46:23]完美世界DOTA2联赛PWL S2 FTD vs Magma 第一场 11.20
2020/11/23 DOTA
在Gnumeric下使用Python脚本操作表格的教程
2015/04/14 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python中序列的修改、散列与切片详解
2017/08/27 Python
Python3.4 splinter(模拟填写表单)使用方法
2018/10/13 Python
python 命令行传入参数实现解析
2019/08/30 Python
python cv2截取不规则区域图片实例
2019/12/21 Python
解决tensorflow由于未初始化变量而导致的错误问题
2020/01/06 Python
Python字符串函数strip()原理及用法详解
2020/07/23 Python
印度服装购物网站:Limeroad
2018/09/26 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
五一服装活动方案
2014/01/11 职场文书
中学生社会实践活动总结
2014/07/03 职场文书
公司法定代表人授权委托书
2014/09/29 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
2016年小学生寒假总结
2015/10/10 职场文书
DSP接收机前端设想
2022/04/05 无线电
GTX1650super好不好 gtx1650super显卡属于什么级别
2022/04/08 数码科技
Vue OpenLayer 为地图绘制风场效果
2022/04/24 Vue.js