心 空

  • Tools
Ricky Hao
  1. 首页
  2. Python
  3. 正文

Python 内存分析杂记

29 7 月, 2019 7666点热度 0人点赞 1条评论

Tracemalloc

Python 3.4里引入的一个专门用来分析内存状态的模块。tracemalloc
这里我们只需要记住几个命令就行:

import tracemalloc
tracemalloc.start() # 开始监控内存
snapshot = tracemalloc.take_snapshot() # 记录内存快照
top_stats = snapshot.statistics('lineno') #按lineno分析内存快照状态
for stat in top_stats[:10]: # 打印前10的内存占用情况
    print(stat)

snapshot_2 = tracemalloc.take_snapshot() # 记录新的内存快照
top_stats = snapshot_2.compare_to(snapshot, 'lineno') # 对比两个内存快照的信息
for stat in top_stats[:10]: # 打印前10的内存占用情况,这里会展示出两个快照间的数量变化
    print(stat)
tracemalloc.stop()

GC

这里使用的是Python自带的gc模块。gc
Python的内存回收是引用计数回收,因此,当一个对象的引用计数降为0时,就会被回收。
我们使用gc模块能够分析一个对象的引用信息,便于我们查找多余的引用,或使用weakref弱引用去优化代码。
gc模块提供了两个很好用的方法:
* gc.get_referrers(*objs):返回一个列表,内容是所有直接引用了任意一个objs的对象
* gc.get_referents(*objs):返回一个列表,内容是objs所引用的所有对象

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: python
最后更新:29 7 月, 2019

Ricky

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

  • rantrism

    您好~我是腾讯云开发者社区运营,关注了您分享的技术文章,觉得内容很棒,我们诚挚邀请您加入腾讯云自媒体分享计划。完整福利和申请地址请见:https://cloud.tencent.com/developer/support-plan
    作者申请此计划后将作者的文章进行搬迁同步到社区的专栏下,你只需要简单填写一下表单申请即可,我们会给作者提供包括流量、云服务器等,另外还有些周边礼物。

    8 12 月, 2022
    回复
  • razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
    取消回复

    这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理。

    COPYRIGHT © 2025 心 空. ALL RIGHTS RESERVED.

    Theme Kratos Made By Seaton Jiang