我正在处理大型的腌制数据文件,发现如果我重复将相同的文件导入相同的变量,则会增加内存使用率。这些文件没有什么特别的。只是包含几个巨大的多维列表的对象。
以下是数据导入方法:
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程序中的内存泄漏进行故障排除,并偶然发现了这种现象。)