使用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定时检查启动某个exe程序适合检测exe是否挂了
Jan 21 Python
python控制台显示时钟的示例
Feb 24 Python
python3 遍历删除特定后缀名文件的方法
Apr 23 Python
Python pymongo模块常用操作分析
Sep 01 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
详解Python3序列赋值、序列解包
May 14 Python
python Django框架实现web端分页呈现数据
Oct 31 Python
解决安装pyqt5之后无法打开spyder的问题
Dec 13 Python
python3 logging日志封装实例
Apr 08 Python
python进行参数传递的方法
May 12 Python
python如何保存文本文件
Jun 07 Python
Python实例方法、类方法、静态方法区别详解
Sep 05 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中的字符串函数
2006/10/09 PHP
PHP中其实也可以用方法链
2011/11/10 PHP
xss防御之php利用httponly防xss攻击
2014/03/21 PHP
JavaScript实现删除电脑的关机键
2016/07/26 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
效率高的Javscript字符串替换函数的benchmark
2008/08/02 Javascript
javascript 表单验证常见正则
2009/09/28 Javascript
jQuery实现表单input中提示文字value随鼠标焦点移进移出而显示或隐藏的代码
2010/03/21 Javascript
Jquery 插件学习实例1 插件制作说明与tableUI优化
2010/04/02 Javascript
详解JavaScript对象和数组
2015/12/03 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
轻松实现js弹框显示选项
2016/09/13 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
微信小程序获取循环元素id以及wx.login登录操作
2017/08/17 Javascript
vue引入axios同源跨域问题
2018/09/27 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
启动targetcli时遇到错误解决办法
2017/10/26 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
python的中异常处理机制
2018/08/30 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
python+webdriver自动化环境搭建步骤详解
2019/06/03 Python
python3.6中@property装饰器的使用方法示例
2019/08/17 Python
Python虚拟环境库virtualenvwrapper安装及使用
2020/06/17 Python
魔幻般冒泡背景的CSS3按钮动画
2016/02/27 HTML / CSS
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
飞利浦美国官网:Philips美国
2020/02/28 全球购物
什么是规则表达式
2012/05/03 面试题
本科生详细的自我评价
2013/09/19 职场文书
卫校护理专业毕业生求职信
2013/11/26 职场文书
工商管理专业职业生涯规划
2014/01/01 职场文书
任命通知范文
2015/04/21 职场文书
2016年小学生教师节广播稿
2015/12/18 职场文书
tensorflow中的数据类型dtype用法说明
2021/05/26 Python