使用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 相关文章推荐
Python查询Mysql时返回字典结构的代码
Jun 18 Python
python 读写、创建 文件的方法(必看)
Sep 12 Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 Python
Python将多个excel表格合并为一个表格
Feb 22 Python
python生成器,可迭代对象,迭代器区别和联系
Feb 04 Python
Anaconda入门使用总结
Apr 05 Python
详解python和matlab的优势与区别
Jun 28 Python
简单易懂Pytorch实战实例VGG深度网络
Aug 27 Python
基于Python实现视频的人脸融合功能
Jun 12 Python
python 删除系统中的文件(按时间,大小,扩展名)
Nov 19 Python
Python的scikit-image模块实例讲解
Dec 30 Python
python中sqllite插入numpy数组到数据库的实现方法
Jun 21 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
mysql时区问题
2008/03/26 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP扩展模块Pecl、Pear以及Perl的区别
2014/04/09 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
django中的ajax组件教程详解
2018/10/18 PHP
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
jQuery仿360导航页图标拖动排序效果代码分享
2015/08/24 Javascript
JS实现光滑展开合拢的菜单效果代码
2015/09/16 Javascript
JavaScript Math 对象常用方法总结
2016/04/28 Javascript
jQuery插入节点和移动节点用法示例(insertAfter、insertBefore方法)
2016/09/08 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
利用JQuery实现datatables插件的增加和删除行功能
2017/01/06 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
Nodejs使用Mongodb存储与提供后端CRD服务详解
2018/09/04 NodeJs
小程序获取周围IBeacon设备的方法
2018/10/31 Javascript
Cookbook组件形式:优化 Vue 组件的运行时性能
2018/11/25 Javascript
浅谈VUE中演示v-for为什么要加key
2020/01/16 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
vue项目查看vue版本及cli版本的实现方式
2020/10/24 Javascript
python实现统计代码行数的方法
2015/05/22 Python
python清除字符串里非字母字符的方法
2015/07/02 Python
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
谈谈python中GUI的选择
2018/03/01 Python
python搜索包的路径的实现方法
2019/07/19 Python
Python Pandas 箱线图的实现
2019/07/23 Python
Python的缺点和劣势分析
2019/11/19 Python
关于python tushare Tkinter构建的简单股票可视化查询系统(Beta v0.13)
2020/10/19 Python
html5关于外链嵌入页面通信问题(postMessage解决跨域通信)
2020/07/20 HTML / CSS
大学在校生求职信范文
2013/11/21 职场文书
小学防溺水制度
2014/01/29 职场文书
园林技术专业求职信
2014/07/28 职场文书
股权投资协议书
2016/03/23 职场文书