Python 内存分析杂记

  • A+
所属分类:Python


7月 29, 2019 1条评论
6,080次阅读
0人点赞

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所引用的所有对象

点赞
分享
  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin