我不确定它是否是内存泄漏,但看起来像一个,我在这里找不到解决方案。 我无法粘贴完整的代码,但这里是泄漏的部分:
self.dctSpreads = defaultdict(list)
lstMat = ['2Y','3Y','4Y','5Y','6Y','7Y','8Y','9Y','10Y','12Y','15Y','20Y','25Y','30Y']
lstSpreads = ['A','B','C','D','E']
def __GetSpreadMDValues__(self):
lstSpreadRIC = []
lstSpreadVal = []
#Construct proper RICs to extract the data
for i in range(0, len(self.lstSpreads)):
for j in range(0, len(self.lstMat)):
lstSpreadRIC.append(self.lstMat[j])
#get market data
lstSpreadVal = self.__GetListDataSnaps__('FIELD1', lstCSASpreadRIC)
self.dctSpreads[self.lstSpreads[i]] = lstCSASpreadVal
lstSpreadRIC = []
lstSpreadVal = []
问题是self.dctSpreads
(具有浮动值的列表字典)会增加内存使用量,但在我使用类对象后从不释放它。我试过编写一个简单的析构函数,比如调用方法
def Destructor(self):
gc.collect()
在完成我的跑步之前但没有帮助。
任何想法都表示赞赏。
答案 0 :(得分:2)
Python将使未使用的内存可供Python脚本使用以及何时返回操作系统之间存在差异。前者在没有对象的引用(假设是CPython)时立即发生,后者可能在Python解释器退出之前不会发生,具体取决于分配的对象类型。这是正常和预期的行为。