【发布时间】:2015-02-04 14:40:55
【问题描述】:
我知道当 Python 知道不再有任何对事物的引用时,它会清除事物的内存。在我的代码中,我正在模拟一段时间内的人口。
个人出生并最终死亡。当他们死去时,我希望他们从记忆中消失。但与此同时,我已将它们放入各种列表中,然后我将其删除。垃圾收集是否知道它们已经消失,所以它会从内存中清除它们吗?我对代码中内存的跟踪(通过 guppy)表明某处的内存量正在缓慢增加。
这是一个示例代码,它会在每个时间步创建 4 个人,将他们放入一个列表中,然后转到下一个时间步并用一组新的 4 个替换这 4 个。我的问题是他们何时被替换垃圾收集器会意识到它们已经消失了。
class Person:
def __init__(self,year,id):
self.id = (year,id)
for year in xrange(100):
tmplist = []
for counter in range(4):
tmplist.append(Person(year,counter))
mainlist = tmplist
#do operations to mainlist, but leave it there until replacing it next time through.
(如果您有后续问题,我们深表歉意 - 我在墨尔本时间,所以我要去睡觉了)
【问题讨论】:
-
是的,在每次交替迭代后,它都会被垃圾回收,Python 可以重新使用该内存空间。见:Puzzled with LOAD_FAST/STORE_FAST of python
标签: python python-2.7 garbage-collection