在python中释放deepcopy字典

时间:2015-08-31 12:51:55

标签: python dictionary

我有这个我需要做的python类

self.data = copy.deepcopy(raw_data)

raw_data是字典的字典,内存占用很多兆字节。我只需要一次数据(我对数据进行了一些修改,因此需要进行深度复制),并且我想在完成计算后销毁深度复制数据。

从内存中清除数据的最佳方法是什么?

这会有用吗?

self.data = None

注意我使用Python 3.4,如果它有所作为。

2 个答案:

答案 0 :(得分:0)

有人说,只要你不使用变速器一段时间,python就会为你做这件事是不必要的。有人说使用garabage collector库。

根据Havenard和Python Official Documentation,您可以强制垃圾收集器使用gc.collect()

释放未引用的内存

有关此内容的更多信息:

How can I explicitly free memory in Python?

答案 1 :(得分:0)

您必须直接或间接停止引用对象。将self.data设置为None可能还不够。 del self.data做同样的事情,但不是将self.data设置为None,而是从data中删除属性self

CPython(python的正常实现)使用主引用计数来确定何时可以收集对象,当引用计数降至零时,它将立即收集。您可以使用self.data检查sys.getrefcount(self.data)的引用计数,但这可能会让您感到困惑,因为它可能会报告另一个引用,因为函数本身具有对象的引用。