使用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实例之wxpython中Frame使用方法
Jun 09 Python
python使用正则表达式检测密码强度源码分享
Jun 11 Python
python模块之re正则表达式详解
Feb 03 Python
详解Python pygame安装过程笔记
Jun 05 Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 Python
Python cookbook(数据结构与算法)实现查找两个字典相同点的方法
Feb 18 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
Python中的单下划线和双下划线使用场景详解
Sep 09 Python
python图形开发GUI库pyqt5的基本使用方法详解
Feb 14 Python
python实现经典排序算法的示例代码
Feb 07 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 Python
python图片灰度化处理的几种方法
Jun 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
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
PHP 获取ip地址代码汇总
2015/07/05 PHP
常见PHP数据库解决方案分析介绍
2015/09/24 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
详解Yii2 之 生成 URL 的方法
2017/06/16 PHP
PHP7数组的底层实现示例
2019/08/25 PHP
利用PHP计算有多少小于当前数字的数字方法示例
2020/08/26 PHP
jquery 图片 上一张 下一张 链接效果(续篇)
2010/04/20 Javascript
javascript 获取网页标题代码实例
2014/01/22 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
BootStrap 轮播插件(carousel)支持左右手势滑动的方法(三种)
2016/07/07 Javascript
图文详解Javascript中的上下文和作用域
2017/02/15 Javascript
微信页面弹出键盘后iframe内容变空白的解决方案
2017/09/20 Javascript
JS模拟实现哈希表及应用详解
2018/05/04 Javascript
解决JS表单验证只有第一个IF起作用的问题
2018/12/04 Javascript
微信小程序如何再次获取用户授权的方法
2019/05/10 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
vue+element-ui表格封装tag标签使用插槽
2020/06/18 Javascript
快速了解Vue父子组件传值以及父调子方法、子调父方法
2020/07/15 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[00:34]DOTA2上海特级锦标赛 Spirit战队宣传片
2016/03/04 DOTA
解决python opencv无法显示图片的问题
2018/10/28 Python
Python新手学习raise用法
2020/06/03 Python
基于python调用jenkins-cli实现快速发布
2020/08/14 Python
2013年员工自我评价范文
2013/12/27 职场文书
表彰先进集体通报
2014/01/12 职场文书
群众路线批评与自我批评
2014/02/06 职场文书
工作目标责任书
2014/07/23 职场文书
2014年卫生工作总结
2014/11/27 职场文书
毕业生对母校寄语
2015/02/26 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
Java 泛型详解(超详细的java泛型方法解析)
2021/07/02 Java/Android
MySQL控制流函数(-if ,elseif,else,case...when)
2022/07/07 MySQL
设置IIS Express并发数
2022/07/07 Servers
Java结构型设计模式之组合模式详解
2022/09/23 Java/Android