Python Glossary English

все 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Сообщить о неточности