使用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中print的不换行即时输出的快速解决方法
Jul 20 Python
Python基础之getpass模块详细介绍
Aug 10 Python
Python读csv文件去掉一列后再写入新的文件实例
Dec 28 Python
Python实现在tkinter中使用matplotlib绘制图形的方法示例
Jan 18 Python
Python简单爬虫导出CSV文件的实例讲解
Jul 06 Python
Python绘制KS曲线的实现方法
Aug 13 Python
把pandas转换int型为str型的方法
Jan 29 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
Django CSRF认证的几种解决方案
Mar 03 Python
Python操作MongoDb数据库流程详解
Mar 05 Python
如何用Matplotlib 画三维图的示例代码
Jul 28 Python
python爬虫中url管理器去重操作实例
Nov 30 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
德劲1103二次变频版的打磨
2021/03/02 无线电
pdo中使用参数化查询sql
2011/08/11 PHP
PHP框架性能测试报告
2016/05/08 PHP
thinkphp在低版本Nginx 下支持PATHINFO的方法分享
2016/05/27 PHP
php 修改上传文件大小限制实例详解
2016/10/23 PHP
javascript 判断中文字符长度的函数代码
2012/08/27 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
2012/12/30 Javascript
JavaScript获取和设置CheckBox状态的简单方法
2013/07/05 Javascript
jquery 日期控件datepicker属性详细解析
2013/11/08 Javascript
javascript禁用Tab键脚本实例
2013/11/22 Javascript
jQuery oLoader实现的加载图片和页面效果
2015/03/14 Javascript
JavaScript返回0-1之间随机数的方法
2015/04/06 Javascript
jQuery easyUI datagrid 增加求和统计行的实现代码
2016/06/01 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
JavaScript高仿支付宝倒计时页面及代码实现
2016/10/21 Javascript
使用jQuery的ajax方法向服务器发出get和post请求的方法
2017/01/13 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
jQuery实现基本隐藏与显示效果的方法详解
2018/09/05 jQuery
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
JS求解两数之和算法详解
2020/04/28 Javascript
Python列表计数及插入实例
2014/12/17 Python
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
python创建进程fork用法
2015/06/04 Python
python使用pipeline批量读写redis的方法
2019/02/18 Python
python实现车牌识别的示例代码
2019/08/05 Python
jupyter notebook 使用过程中python莫名崩溃的原因及解决方式
2020/04/10 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
html5模拟平抛运动(模拟小球平抛运动过程)
2013/07/25 HTML / CSS
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
C语言面试题
2013/05/19 面试题
应届生煤化工求职信
2013/10/21 职场文书
加拿大留学自荐信
2014/01/28 职场文书
民主评议党员自我评价材料
2014/09/18 职场文书
联谊活动总结范文
2015/05/09 职场文书
2016年感恩教师节活动总结
2016/04/01 职场文书