Как получить сборку мусора Python для удаления объекта из моего определенного класса?
При использовании дерева решений, которое генерирует тысячи узлов в секунду, я не могу получить сборщик мусора для удаления узлов, которые больше не нужны. Я довольно новичок в этом, поэтому, пожалуйста, помогите мне понять, что происходит с этими примерами...
Я знаю, что сборщик мусора удалит объекты без ссылок. И я запустил этот пример кода, чтобы убедиться, что сборка мусора работает...(адаптировано с https://www.geeksforgeeks.org/garbage-collection-python/)
import gc
def create_cycle():
x = {}
x[1] = x
print(x)
create_cycle()
collected = gc.collect()
print("Garbage collector: collected {} objects.".format(collected))
Это выводы
{1: {...}}
Garbage collector: collected 1 objects.
Один объект был собран.
Но когда я пытаюсь провести этот же эксперимент, используя мой класс Node, он ничего не собирает.
import gc
class Node:
def __init__(self):
self.x = 0
def foo(self, number):
self.x = number
def create_cycle():
node_1 = Node()
node_1.foo(3)
print(node_1)
create_cycle()
collected = gc.collect()
print("Garbage collector: collected {} objects.".format(collected))
Это выводы
<__main__.Node object at 0x0000015F640E0EF0>
Garbage collector: collected 0 objects.
Ноль объектов собрано. Я даже пытался явно удалить любые ссылки с помощью строки "node_1 = None". Но это ничего не изменило. Итак, что я недопонимаю?