Python内存监测实战:使用memory_profiler与mprof绘制运行曲线

青禾
青禾
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何使用memory_profiler及其mprof命令监测Python函数的最大内存消耗。通过安装memory_profiler和psutil,在命令行执行mprof run生成.dat数据文件,并利用mprof plot绘制内存随时间变化的统计图。同时提供了解决GBK解码错误的代码修改方案及@profile装饰器的使用注意事项。

此前为寻找能输出Python函数运行时最大内存消耗的有效方法,查阅了大量博客与知乎文章并尝试多种方案,最终选定利用memory_profiler库中的mprof功能进行测量。该工具的原理是在代码执行期间每隔0.1秒统计一次内存使用情况,并生成相应的统计图表。

具体操作步骤如下:

首先需安装memory_profiler和psutil库(psutil主要用于提升memory_profiler的性能,建议一并安装),可通过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环境中,该修饰器始终无法生效,强行添加会导致报错,而未添加该修饰器时程序运行正常。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。