使用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导入txt数据到mysql的方法
Apr 08 Python
python魔法方法-属性访问控制详解
Jul 25 Python
python高阶爬虫实战分析
Jul 29 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
Sep 27 Python
浅谈python中真正关闭socket的方法
Dec 18 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
python命名空间(namespace)简单介绍
Aug 10 Python
Python目录和文件处理总结详解
Sep 02 Python
python连接、操作mongodb数据库的方法实例详解
Sep 11 Python
python用WxPython库实现无边框窗体和透明窗体实现方法详解
Feb 21 Python
详解python方法之绑定方法与非绑定方法
Aug 17 Python
实例代码讲解Python 线程池
Aug 24 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/11/26 PHP
phpinfo 系统查看参数函数代码
2009/06/05 PHP
PHP禁止页面缓存的代码
2011/10/23 PHP
PHP Switch 语句之学习笔记
2013/09/21 PHP
php使用PDO操作MySQL数据库实例
2014/12/30 PHP
PHP mysqli事务操作常用方法分析
2017/07/22 PHP
PHP实现随机发扑克牌
2020/04/22 PHP
jquery 图片预加载 自动等比例缩放插件
2008/12/25 Javascript
说说JSON和JSONP 也许你会豁然开朗
2012/09/02 Javascript
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
详解JavaScript ES6中的模板字符串
2015/07/28 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
VsCode新建VueJs项目的详细步骤
2017/09/23 Javascript
Vue.js用法详解
2017/11/13 Javascript
jQuery实现的点击标题文字切换字体效果示例【测试可用】
2018/04/26 jQuery
vuejs 切换导航条高亮(路由菜单高亮)的方法示例
2018/05/29 Javascript
简单说说如何使用vue-router插件的方法
2019/04/08 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
python读取oracle函数返回值
2016/07/18 Python
python创建列表和向列表添加元素的实现方法
2017/12/25 Python
python selenium 执行完毕关闭chromedriver进程示例
2019/11/15 Python
Python图像处理库PIL的ImageFont模块使用介绍
2020/02/26 Python
python 解决Fatal error in launcher:错误问题
2020/05/21 Python
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
Paradox London官方网站:英国新娘鞋婚礼鞋品牌
2019/08/29 全球购物
莫斯科制造商的廉价皮大衣:Fursk
2020/06/09 全球购物
乡镇党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
事业单位考察材料范文
2014/12/25 职场文书
2015年酒店工作总结
2015/04/28 职场文书
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
使用CSS实现黑白格背景效果
2022/06/01 HTML / CSS