все Python 3gcфункция
gc.collect()
управление сборкой
Запускает сборку циклического мусора немедленно и возвращает число найденных недостижимых объектов.
Синтаксис
gc.collect(generation=2)
Большинство объектов CPython освобождает подсчётом ссылок сразу после del, и gc.collect им не нужен: сборщик ищет только циклы (объект ссылается сам на себя или пара ссылается друг на друга). Число в ответе — не «освобождённая память» и между версиями разное, полагаться на него нельзя. Звать collect в цикле «для экономии памяти» дорого: полный обход всех контейнеров. Аргумент — поколение 0–2, иначе ValueError.
Примеры
import gc, weakref
class Node:
pass
gc.disable() # чтобы автоматическая сборка не вмешалась
n = Node()
n.me = n # цикл: объект ссылается сам на себя
r = weakref.ref(n)
del n
print(r() is None) # → False — подсчёт ссылок цикл не освободил
print(gc.collect() > 0, r() is None) # → True True
gc.enable()
import gc
try:
gc.collect(3)
except ValueError as e:
print(e) # → invalid generation
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности