使用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 代码性能优化技巧分享
Aug 07 Python
Python入门及进阶笔记 Python 内置函数小结
Aug 09 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
Python 网页解析HTMLParse的实例详解
Aug 10 Python
python逐行读写txt文件的实例讲解
Apr 03 Python
python的中异常处理机制
Aug 30 Python
使用python PIL库实现简单验证码的去噪方法步骤
May 10 Python
Django Python 获取请求头信息Content-Range的方法
Aug 06 Python
使用 django orm 写 exists 条件过滤实例
May 20 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
Aug 07 Python
Python random模块的使用示例
Oct 10 Python
python 统计list中各个元素出现的次数的几种方法
Feb 20 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
同时提取多条新闻中的文本一例
2006/10/09 PHP
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
PHP加密函数 Javascript/Js 解密函数
2013/09/23 PHP
smarty中post用法实例
2014/11/28 PHP
php安装dblib扩展,连接mssql的具体步骤
2017/03/02 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
小议Function.apply() 之一------(函数的劫持与对象的复制)
2006/11/30 Javascript
浅析showModalDialog数据缓存问题(用禁止浏览器缓存解决)
2013/07/09 Javascript
jquery 单引号和双引号的区别及使用注意
2013/07/31 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
JS+CSS相对定位实现的下拉菜单
2015/10/06 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
详解Django框架中用户的登录和退出的实现
2015/07/23 Python
Python实现截屏的函数
2015/07/26 Python
基于python时间处理方法(详解)
2017/08/14 Python
Python模拟三级菜单效果
2017/09/11 Python
python同时遍历数组的索引和值的实例
2018/11/15 Python
Python 存储字符串时节省空间的方法
2019/04/23 Python
Django 数据库同步操作技巧详解
2019/07/19 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
scrapy实践之翻页爬取的实现
2021/01/05 Python
prAna官网:瑜伽、旅行和冒险服装
2019/03/10 全球购物
杭州-DOTNET笔试题集
2013/09/25 面试题
应届生个人求职信模板
2013/11/26 职场文书
公司人力资源的自我评价
2014/01/02 职场文书
《李广射虎》教学反思
2014/04/27 职场文书
房屋租赁委托书范本
2014/10/04 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
2015年乡镇人大工作总结
2015/04/22 职场文书
立案决定书范文
2015/06/24 职场文书
python的html标准库
2022/04/29 Python