python - 反复解压文件导致内存泄漏
问题描述
我正在处理大型腌制数据文件,发现如果我反复将相同的文件导入相同的变量,我的内存使用量会增加。这些文件没有什么特别的。只是包含几个巨大的多维列表的对象。
以下是数据导入方法:
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 程序中的内存泄漏进行故障排除,并偶然发现了这种现象。)
解决方案
推荐阅读
- php - 将当前日期与数据库中的日期进行比较
- groovy - 如何使用 groovy 解析和更新 SoapUI 请求的 CDATA 部分?
- ios - AVCaptureDevice 上的平滑对焦斜坡
- android - Android中的竖排文本识别
- regex - 使用 sed 从两个不同字符之后的 AND 之间的 URL 中删除一个字符串
- c# - 如何在带边框的winforms中创建2个圆角?
- android - 如何从edittext的gettag中检索对象数据
- apache - Spring boot 作为 java -jar 运行,AJP 设置不通过 Apache 解析 Web 调用。但 API 调用正在工作
- javascript - 在 ExtJs 中动态重新加载面板
- docker - Docker 守护进程未启动