使用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实现linux服务器批量修改密码并生成execl
Apr 22 Python
让python同时兼容python2和python3的8个技巧分享
Jul 11 Python
Python3搜索及替换文件中文本的方法
May 22 Python
Python通过OpenCV的findContours获取轮廓并切割实例
Jan 05 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
python反编译学习之字节码详解
May 19 Python
Django文件存储 默认存储系统解析
Aug 02 Python
Python使用tkinter模块实现推箱子游戏
Oct 08 Python
pyqt5数据库使用详细教程(打包解决方案)
Mar 25 Python
Django静态文件加载失败解决方案
Aug 26 Python
使用Python画了一棵圣诞树的实例代码
Nov 27 Python
Opencv中cv2.floodFill算法的使用
Jun 18 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表单转换textarea换行符的方法
2010/09/10 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
jquery json 实例代码
2010/12/02 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
用jQuery toggleClass 实现鼠标移上变色
2014/05/14 Javascript
Javascript控制div属性动态变化实例分析
2015/10/08 Javascript
jQuery禁用键盘后退屏蔽F5刷新及禁用右键单击
2016/01/22 Javascript
深入浅析JavaScript面向对象和原型函数
2016/02/06 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
基于JS实现导航条flash导航条
2016/06/17 Javascript
js 自带的sort() 方法全面了解
2016/08/16 Javascript
jQuery实现输入框邮箱内容自动补全与上下翻动显示效果【附demo源码下载】
2016/09/20 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
Nodejs+angularjs结合multiparty实现多图片上传的示例代码
2017/09/29 NodeJs
利用vue开发一个所谓的数独方法实例
2017/12/21 Javascript
浅谈React前后端同构防止重复渲染
2018/01/05 Javascript
详解vue 计算属性与方法跟侦听器区别(面试考点)
2018/04/23 Javascript
Vue 实现简易多行滚动"弹幕"效果
2020/01/02 Javascript
js实现浏览器打印功能的示例代码
2020/07/15 Javascript
[56:42]完美世界DOTA2联赛循环赛 Matador vs Forest 第二场 11.06
2020/11/06 DOTA
Python ljust rjust center输出
2008/09/06 Python
用python登录Dr.com思路以及代码分享
2014/06/25 Python
Python的Flask框架中配置多个子域名的方法讲解
2016/06/07 Python
Python编程之event对象的用法实例分析
2017/03/23 Python
python中yaml配置文件模块的使用详解
2018/04/27 Python
python和shell监控linux服务器的详细代码
2018/06/22 Python
python机器学习包mlxtend的安装和配置详解
2019/08/21 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
浅析Python数字类型和字符串类型的内置方法
2019/12/22 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
python中用ctypes模拟点击的实例讲解
2020/11/26 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
食品采购员岗位职责
2014/04/14 职场文书
师德师风建设方案
2014/05/08 职场文书
签订劳动合同通知书
2015/04/16 职场文书