Pympler用于测量、监控和分析正在运行的python应用程序中python对象的内存行为,完全由python编写,仅支持3.6以上版本
安装
pip install Pympler
第一步:定位内存泄漏
from pympler import tracker
tr = tracker.SummaryTracker()
接口返回处打印内存差异,观察内存是否有泄漏
tr.print_diff() # 本次内存和上次内存块的差异
然后我们访问接口,多触发几次,不用看前两次,等输出稳定后,如果有内存泄漏是如下输出:
这样的结果表示没有内存泄漏
types | # objects | total size
======= | =========== | ============
第二步:确定泄漏的代码块
通过读代码、debug调试定位代码块,或者通过工具objgraph、trancemalloc
import os
import objgraph
def obj_graph_stat(mark=''):
file_path = r'D:\\obj_graph.txt'
if not os.path.exists(file_path):
file = open(file_path, 'w')
file.close