天天看點

Effective Python 讀書筆記: 第59條: 用tracemalloc來掌握記憶體的使用及洩露情況

# -*- encoding: utf-8 -*-

import gc

'''
第59條: 用tracemalloc來掌握記憶體的使用及洩露情況

關鍵:
1 python記憶體管理
本質: 通過引用計數來 + 循環檢測器
作用: 
1)當某個對象全部引用過期的時候,被引用對象可以得到清理
2) 來即回收機制能把自我引用對象清除

2 調試記憶體使用狀況
方法1: 使用gc子產品進行查詢,列出來即收集器目前所知的每個對象
import gc
objs = gc.get_objects()
python2還可以使用heapy包等追蹤記憶體使用量

方法2: python3.4推出新的内置子產品,叫做tracemalloc
    可以把某個對象與該對象的記憶體配置設定點聯系起來
用法:
import tracemalloc
tracemalloc.start(10)
time1 = tracemalloc.take_snapshow()
import waste_memory
x = waste_memory.run()
time2 = tracemalloc.take_snapshow()
stats = time2.compare_to(time1, 'lineno')
for stat in stats[:3]:
    print stat

參考:
Effectiv Python 編寫高品質Python代碼的59個有效方法
'''

def useGC():
    objs = gc.get_objects()
    print "%d objects before" % (len(objs))


def process():
    useGC()


if __name__ == "__main__":
    process()