使用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中的对象,方法,类,实例,函数用法分析
Jan 15 Python
通过实例浅析Python对比C语言的编程思想差异
Aug 30 Python
Python连接SQLServer2000的方法详解
Apr 19 Python
python做量化投资系列之比特币初始配置
Jan 23 Python
将string类型的数据类型转换为spark rdd时报错的解决方法
Feb 18 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
Jun 18 Python
python中的split()函数和os.path.split()函数使用详解
Dec 21 Python
Python 将 QQ 好友头像生成祝福语的实现代码
May 03 Python
Python中的wordcloud库安装问题及解决方法
May 27 Python
python3排序的实例方法
Oct 20 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 Python
python周期任务调度工具Schedule使用详解
Nov 23 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中的实现trim函数代码
2007/03/19 PHP
php数组编码转换示例详解
2014/03/11 PHP
thinkphp模板输出技巧汇总
2014/11/24 PHP
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
javascript EXCEL 操作类代码
2009/07/30 Javascript
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
Javascript开发之三数组对象实例介绍
2012/11/12 Javascript
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
JSON+HTML实现国家省市联动选择效果
2014/05/18 Javascript
javascript复制粘贴与clipboardData的使用
2014/10/16 Javascript
jquery插件pagination实现无刷新ajax分页
2015/09/30 Javascript
JavaScript中return用法示例
2016/11/29 Javascript
有关suggest快速删除后仍然出现下拉列表的bug问题
2016/12/02 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
JavaScript方法_动力节点Java学院整理
2017/06/28 Javascript
js实现前端图片上传即时预览功能
2017/08/02 Javascript
vue 2.0项目中如何引入element-ui详解
2017/09/06 Javascript
使用FileReader API创建Vue文件阅读器组件
2018/04/03 Javascript
layui prompt 设置允许空白提交的方法
2019/09/24 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
Python使用progressbar模块实现的显示进度条功能
2018/05/31 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python可视化实现代码
2019/01/15 Python
在jupyter notebook 添加 conda 环境的操作详解
2020/04/10 Python
Python pip使用超时问题解决方案
2020/08/03 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
英语系毕业生自荐信
2013/10/31 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
驾驶员培训方案
2014/05/01 职场文书
党的群众路线教育实践活动方案
2014/10/31 职场文书
《圆的周长》教学反思
2016/02/17 职场文书
SpringCloud之@FeignClient()注解的使用方式
2021/09/25 Java/Android
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python
mysql数据库实现设置字段长度
2022/06/10 MySQL