如何在列表中分配变量而不仅仅是列表元素?(用于python)

2024-05-29 06:35:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个迭代对象的列表。你知道吗

在每个循环之后,我想将该对象设置为None并强制垃圾收集器运行。你知道吗

但是我不知道如何分配对象而不是元素。例如:

a = [ object1, object2, object3]

for i in xrange(0,len(a)]:
       #do something with object
        ....
       #done working on object
       a[i] = None <-- This sets element i to None and leaves the object intact.

我之所以尝试这样做,是因为我使用了一个机器学习库,并遍历了许多分类器。分类器在内存中保存了大量的预测。因此,一旦我将预测写入CSV,我就不再需要它们了。这就是为什么在每个循环结束时,我希望删除分类器,然后运行gc.收集()并在理想情况下改进内存管理。你知道吗

所以问题是,如何将对象赋给None?你知道吗


Tags: 对象内存innone元素列表forobject
1条回答
网友
1楼 · 发布于 2024-05-29 06:35:51

正如@thefourtheye:

当您分配None并且不存在其他引用时,对象将被自动标记为GC。你不必明确地触发它。你知道吗

通过将None分配给列表索引,可以减少实际对象的引用计数。当您说a[i] = None时,您将a[i]处对象的引用计数减少1。如果它有引用计数1,那么它将到达0,并且由于没有任何对象不再引用该对象,它将准备好进行GC。你知道吗

相关问题 更多 >

    热门问题