讲师中心 微信公众号

工具推荐

视频效率加速
Laper
Laper

剧本策划到成片协作

剧云
剧云

中文短剧剧本制作平台

AniShort
AniShort

AI短剧协同制作平台

立刻MV
立刻MV

低成本歌曲 MV、视频生成

Python 内存快照对比分析方法

落伟同学_4881

落伟同学_4881

发布时间:2026-02-13 23:12:04

|

650人浏览过

|

来源于php中文网

原创

Python内存快照对比分析有四种方法:一、用tracemalloc追踪堆内存分配并比对行级差异;二、用objgraph统计指定类型对象数量变化;三、用gc模块获取对象列表并比对ID集合识别新增对象;四、用pympler的SummaryTracker进行多维度内存差异报告。

python 内存快照对比分析方法

如果您需要识别 Python 程序运行过程中对象数量或内存占用的异常变化,则可能需对不同时间点的内存状态进行快照采集与逐项比对。以下是实现 Python 内存快照对比分析的多种方法:

一、使用 tracemalloc 捕获并比较堆内存分配

tracemalloc 是 Python 标准库内置模块,可精确追踪 Python 对象的内存分配来源,支持在两个时间点分别获取快照,并直接计算差异。

1、在程序起始位置调用 tracemalloc.start() 启用内存跟踪。

2、执行待测代码段后,调用 snapshot1 = tracemalloc.take_snapshot() 获取第一个快照。

立即学习“Python免费学习笔记(深入)”;

3、继续执行另一段逻辑(如循环迭代、对象创建等),再调用 snapshot2 = tracemalloc.take_snapshot() 获取第二个快照。

4、调用 top_stats = snapshot2.compare_to(snapshot1, 'lineno') 计算新增内存分配行级统计。

5、遍历 top_stats 并打印前 10 条差异项,例如 print(stat)。

二、利用 objgraph 生成对象引用图并比对对象数量变化

objgraph 可以统计指定类型对象的实时数量,并可视化其引用关系;通过两次调用统计函数,可定位新增或未释放的对象类型。

1、安装依赖:pip install objgraph。

2、在关键节点处调用 objgraph.show_growth(limit=10) 输出当前增长最显著的 10 类对象及其增量。

3、若需定向比对某类对象,先执行 before = objgraph.count('dict') 记录初始数量。

4、运行目标逻辑后,再次执行 after = objgraph.count('list')(可替换为其他类型如 'function'、'tuple')。

Python Hardener
Python Hardener

通过完整的安全审查、代码整洁重构、健壮的错误处理、正确的日志记录以及完整的文档字符串覆盖,强化 Python 脚本。

下载

5、计算差值:delta = after - before,并判断 delta > 0 是否成立。

三、通过 gc 模块手动触发垃圾回收并检查不可达对象残留

Python 的垃圾回收器(gc)默认管理循环引用,但某些场景下对象可能滞留于 gc.garbage 或未被及时回收;通过对比 gc.get_objects() 结果可发现潜在泄漏对象。

1、在分析起点前调用 import gc; gc.collect() 清理已知可回收对象。

2、执行 objs1 = gc.get_objects() 获取当前所有活动对象列表。

3、运行待测逻辑后,再次调用 gc.collect() 并获取新对象列表:objs2 = gc.get_objects()。

4、构造两组对象 ID 集合:ids1 = set(id(o) for o in objs1) 和 ids2 = set(id(o) for o in objs2)。

5、计算新增对象集合:new_ids = ids2 - ids1,然后遍历其中部分 ID 查看类型:type(gc.get_referrers(list(new_ids)[0])[0])。

四、借助 pympler 进行多维度内存快照与差异报告

pympler 提供 Asizer 类支持跨时间点的对象大小汇总与对比,能按模块、类名或引用路径分类统计,适用于复杂应用的内存审计。

1、安装工具:pip install pympler。

2、初始化分析器:from pympler import tracker; tr = tracker.SummaryTracker()。

3、首次记录快照:tr.print_diff()(首次调用输出基准摘要)。

4、执行目标操作后,再次调用 tr.print_diff(),自动显示自上次以来各类型对象的数量与总尺寸变化。

5、如需导出结构化差异,调用 diff = tr.diff() 获取字典格式结果,并筛选 [d for d in diff if d[2] > 10240](仅显示增长超 10KB 的项)。

热门AI工具

更多
PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
pip安装使用方法
pip安装使用方法

安装步骤:1、确保Python已经正确安装在您的计算机上;2、下载“get-pip.py”脚本;3、按下Win + R键,然后输入cmd并按下Enter键来打开命令行窗口;4、在命令行窗口中,使用cd命令切换到“get-pip.py”所在的目录;5、执行安装命令;6、验证安装结果即可。大家可以访问本专题下的文章,了解pip安装使用方法的更多内容。

3530

2023.10.09

更新pip版本
更新pip版本

更新pip版本方法有使用pip自身更新、使用操作系统自带的包管理工具、使用python包管理工具、手动安装最新版本。想了解更多相关的内容,请阅读专题下面的文章。

8003

2024.12.20

pip设置清华源
pip设置清华源

设置方法:1、打开终端或命令提示符窗口;2、运行“touch ~/.pip/pip.conf”命令创建一个名为pip的配置文件;3、打开pip.conf文件,然后添加“[global];index-url = https://pypi.tuna.tsinghua.edu.cn/simple”内容,这将把pip的镜像源设置为清华大学的镜像源;4、保存并关闭文件即可。

9702

2024.12.23

python升级pip
python升级pip

本专题整合了python升级pip相关教程,阅读下面的文章了解更多详细内容。

5087

2025.07.23

python中print函数的用法
python中print函数的用法

python中print函数的语法是“print(value1, value2, ..., sep=' ', end=' ', file=sys.stdout, flush=False)”。本专题为大家提供print相关的文章、下载、课程内容,供大家免费下载体验。

3380

2023.09.27

python print用法与作用
python print用法与作用

本专题整合了python print的用法、作用、函数功能相关内容,阅读专题下面的文章了解更多详细教程。

269

2026.02.03

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3808

2023.11.20

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6847

2023.07.18

Postman身份认证怎么配置
Postman身份认证怎么配置

本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。

60

2026.11.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn