反复拆包文件导致内存泄漏

时间:2019-04-09 06:12:18

标签: python memory-leaks pickle

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

以下是数据导入方法:

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程序中的内存泄漏进行故障排除,并偶然发现了这种现象。)

0 个答案:

没有答案