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

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

本文介绍如何使用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 相关产品和应用

全部下载

专题列表