我有这个我需要做的python类
self.data = copy.deepcopy(raw_data)
raw_data是字典的字典,内存占用很多兆字节。我只需要一次数据(我对数据进行了一些修改,因此需要进行深度复制),并且我想在完成计算后销毁深度复制数据。
从内存中清除数据的最佳方法是什么?
这会有用吗?
self.data = None
注意我使用Python 3.4,如果它有所作为。
答案 0 :(得分:0)
有人说,只要你不使用变速器一段时间,python就会为你做这件事是不必要的。有人说使用garabage collector库。
根据Havenard和Python Official Documentation,您可以强制垃圾收集器使用gc.collect()
释放未引用的内存有关此内容的更多信息:
答案 1 :(得分:0)
您必须直接或间接停止引用对象。将self.data
设置为None
可能还不够。 del self.data
做同样的事情,但不是将self.data
设置为None
,而是从data
中删除属性self
。
CPython(python的正常实现)使用主引用计数来确定何时可以收集对象,当引用计数降至零时,它将立即收集。您可以使用self.data
检查sys.getrefcount(self.data)
的引用计数,但这可能会让您感到困惑,因为它可能会报告另一个引用,因为函数本身具有对象的引用。