使用memory_profiler监测python代码运行时内存消耗方法
作者:clovermini 发布时间:2022-03-02 06:49:56
前几天一直在寻找能够输出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
值得注意的是,尽管网上大部分都说在待检测的函数之前加上@profile修饰器,但是不知道为何我在anaconda python3.6的环境里始终加不上这个修饰器,强行加上就报错,没加上也没问题。
来源:https://blog.csdn.net/baidu_33122327/article/details/79195176


猜你喜欢
- 本文实例讲述了Python使用回溯法解决迷宫问题。分享给大家供大家参考,具体如下:问题给定一个迷宫,入口已知。问是否有路径从入口到出口,若有
- TKinterPython 的 GUI 库非常多,之所以选择 Tkinter,一是最为简单,二是自带库,不需下载安装,随时使用,跨平台兼容性
- php.ini文件没有参数没有配置正确解决方法:(1) 打开php.ini文件,找到:extension_dir = "./&qu
- 简介XSStrike 是一款用于探测并利用XSS漏洞的脚本XSStrike目前所提供的产品特性:对参数进行模糊测试之后构建合适的payloa
- 前言这篇文章主要介绍了Python 字符串去除空格的6种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,来
- 最近再写openpose,它的网络结构是多阶段的网络,所以写网络的时候很想用列表的方式,但是直接使用列表不能将网络中相应的部分放入到cuda
- 一、首先我们来填个坑支付验签失败这个问题折磨了我两天,官方文档比较含糊不清。各种百度下来的方法试过之后也不尽人意,最后发现问题是没有二次签名
- 除了在 Error 对象和 Errors 集合中说明的提供者错误之外,ADO 本身也将错误返回到运行时环境的异常处理机制之中。使用
- 最近在学习Python的时候遇到一个知识点,在此记录下来可变参数会自动填充前面的同名默认参数比如下面这个函数def add_student(
- 本文实例讲述了Python编程中的反模式。分享给大家供大家参考。具体分析如下:Python是时下最热门的编程语言之一了。简洁而富有表达力的语
- 1.开发环境 vue2.电脑系统 windows10专业版3.在使用vue开发移动端的过程中,我们会因为兼容性而头疼,下面我来分享分享下面v
- 示例1我们将要请求五个不同的url:单线程import timeimport urllib2defget_responses(): &nbs
- 段落还原保持进行检查,以便确保数据库在结束时将是一致的。 在还原顺序结束后,如果恢复的文件有效并且与数据库一致,则恢复的文件将直接变为联机状
- Vue设置反向代理和cookie设置项目场景最近使用Vue开发一个新的项目,因为服务器还没到,调取后端本地接口,因为请求接口的时候没有跨域,
- 简介黑洞图像大家都知道,毕竟前几年刚发布的时候曾火遍全网,甚至都做成表情包了。问题在于,凭什么认为这就是黑洞的照片,而不是一个甜甜圈啥的给整
- 本文实例讲述了Laravel5中实现模糊匹配加多条件查询功能的方法。分享给大家供大家参考,具体如下:方法1. ORM模式public fun
- 本文实例分析了Python多线程操作数据库相关问题。分享给大家供大家参考,具体如下:python多线程并发操作数据库,会存在链接数据库超时、
- 自定义函数参数传递为 字符串格式 ,传递方式1:用this传递 2:引号缺省 3:转义字符(html中 " 代表"
- 最近在这找了好久的js菜单,都没找到满意的,今天找了个,觉得不错,最重要的是简单,希望大家可以参照一下先看看效果图吧:代码特点:js+css
- 【eval()函数】JavaScript有许多小窍门来使编程更加容易。其中之一就是eval()函数,这个函数可以把一个字符串当作一个Java