首页 > 解决方案 > 反复解压文件导致内存泄漏

问题描述

我正在处理大型腌制数据文件,发现如果我反复将相同的文件导入相同的变量,我的内存使用量会增加。这些文件没有什么特别的。只是包含几个巨大的多维列表的对象。

以下是数据导入方法:

def import_sim_data(self):
    gbts = self.import_gbt_data()
    eq = self.import_eq_data()
    ss = self.import_ss_data()
    ngeo = self.import_near_geo_data()
    lunar_phase = self.import_lunar_phase_data()
    return gbts, eq, ss, ngeo, lunar_phase

@staticmethod
def import_gbt_data():
    with open("gbt_data.res", "rb") as f:
        gbts = pickle.load(f)
    return gbts

@staticmethod
def import_eq_data():
    with open("eq_data.res", "rb") as f:
        eq = pickle.load(f)
    return eq

@staticmethod
def import_ss_data():
    with open("ss_data.res", "rb") as f:
        ss = pickle.load(f)
    return ss

@staticmethod
def import_near_geo_data():
    with open("near_geo_data.res", "rb") as f:
        ngeo = pickle.load(f)
    return ngeo

@staticmethod
def import_lunar_phase_data():
    with open("moon_phase.res", "rb") as f:
        lunar_phase = pickle.load(f)
    return lunar_phase

如果我连续运行五次 a, b, c, d, e = problem.import_sim_data() ,每次我的 python 进程的内存使用量都会急剧增加且不可预测。我从第一次导入时使用的 6585MB 增加到 7986MB,再到 8581MB,再到 9872MB,再到 10432MB。什么会导致这种行为?我可以连续数百次导入大型文本文件,完全没有任何问题。

(顺便说一句,这不是代码的正常使用方式,但我正在对 MPI 程序中的内存泄漏进行故障排除,并偶然发现了这种现象。)

标签: pythonmemory-leakspickle

解决方案


推荐阅读