关于垃圾收集的解释 python

Explanation about Garbage collection python

您好,我不确定这是否与 python 中的垃圾收集有关,但我正在寻找有关它在幕后如何工作的一些指导。 下面是我程序的一部分。

def get_data():

 templist = []

 '''
 does stuff to fill templist with newest data
 '''

 return templist

def save_data(new_list, old_list):

 '''
 loops to check for updates.
 if update, write to file
 '''
 if not old_list:
    for n in new_list:
        write_file(n)
 else:
    for n, o in zip(new_list,old_list):
        if n[1] != o[1]:
            write_file(n)
 return new_list

comparelist = []

while True:

 newlist = get_data()
 comparelist = (save_data(newlist, comparelist))

我已经检查了 id() 函数,newlist 每次都作为一个新对象传递给 newlist,然后传递给 comparelist(仍然是对 templist 的内存引用。

我的问题是:

如何以及何时收集对象通常不是问题,您应该只关心您将对它们的强引用保留多长时间,这主要通过确定范围并了解您自己保留哪些对象来解决。

当对象的引用计数下降到零时,它被标记为删除,何时发生删除取决于实现。在参考CPython实现中,它到达0后立即运行https://docs.python.org/3/c-api/refcounting.html#c.Py_DECREF

为了节省一点时间,CPython 会在释放后保留一些列表,以便以后重复使用,以防止每次都创建全新的对象,所以真的没有什么可担心的。