使用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写的创建文件夹自定义函数mkdir()
Aug 25 Python
Python可跨平台实现获取按键的方法
Mar 05 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
Nov 07 Python
基于python 二维数组及画图的实例详解
Apr 03 Python
win10下python3.5.2和tensorflow安装环境搭建教程
Sep 19 Python
Django中create和save方法的不同
Aug 13 Python
python Kmeans算法原理深入解析
Aug 23 Python
深入了解Python 变量作用域
Jul 24 Python
Pycharm的Available Packages为空的解决方法
Sep 18 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
Flask-SocketIO服务端安装及使用代码示例
Nov 26 Python
如何用python批量调整视频声音
Dec 22 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
限制ckeditor上传图片文件大小的方法
2013/11/15 PHP
php循环创建目录示例分享(php创建多级目录)
2014/03/04 PHP
php实现mysql封装类示例
2014/05/07 PHP
实例详解PHP中html word 互转的方法
2016/01/28 PHP
php+mysql实现简单登录注册修改密码网页
2016/11/30 PHP
利用javascript/jquery对上传文件格式过滤的方法
2009/07/25 Javascript
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
js中函数调用的两种常用方法使用介绍
2014/07/17 Javascript
js星星评分效果
2014/07/24 Javascript
javascript变量声明实例分析
2015/04/25 Javascript
AngularJS入门教程之AngularJS模型
2016/04/18 Javascript
jQuery实现分页功能(含ajax请求、后台数据、附完整demo)
2017/04/03 jQuery
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
ui-router中使用ocLazyLoad和resolve的具体方法
2017/10/18 Javascript
在Vue组件中使用 TypeScript的方法
2018/02/28 Javascript
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
2019/02/20 jQuery
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
vue2.0 解决抽取公用js的问题
2020/07/31 Javascript
Python学习笔记之Django创建第一个数据库模型的方法
2019/08/07 Python
python可视化实现KNN算法
2019/10/16 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
python GUI库图形界面开发之PyQt5动态(可拖动控件大小)布局控件QSplitter详细使用方法与实例
2020/03/06 Python
在Python中用GDAL实现矢量对栅格的切割实例
2020/03/11 Python
python爬虫scrapy框架之增量式爬虫的示例代码
2021/02/26 Python
中学教师实习自我鉴定
2013/09/28 职场文书
工程安全员岗位职责
2014/03/09 职场文书
教师三严三实对照检查材料
2014/09/25 职场文书
实习指导教师评语
2014/12/30 职场文书
病危通知书样本
2015/04/17 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
如何拟写通知正文?
2019/04/02 职场文书
导游词之鲁迅祖居
2019/10/17 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS
无线电通信名词解释
2022/02/18 无线电
MySQL 表锁定 LOCK和UNLOCK TABLES的 SQL语法
2022/04/18 MySQL
Nginx利用Logrotate实现日志分割
2022/05/20 Servers