Что именно делает функция g c .collect ()? - PullRequest
2 голосов
/ 24 января 2020

У меня проблемы с пониманием того, что делает функция python gc.collect(). Функция собирает только те объекты, которые можно собрать, чтобы освободить пространство в более позднее время после достижения gc.threshold? или gc.collect() собирает объекты, а также автоматически избавляется от всего, что оно собирало, чтобы пространство можно было освободить сразу после выполнения кода?

1 Ответ

0 голосов
/ 24 января 2020

Это зависит! Если вызывается без аргумента или с generation=2 в качестве аргумента, это освободит объекты, которые можно собрать. При вызове с generation=1 он не очистит свободные списки.

Из документации :

Без аргументов запустите полную коллекцию. Необязательный аргумент генерации может быть целым числом, указывающим, какое поколение собирать (от 0 до 2). ValueError повышается, если номер поколения недействителен. Возвращается число найденных недоступных объектов.

Свободные списки, поддерживаемые для ряда встроенных типов, очищаются при выполнении полной коллекции или коллекции самого высокого поколения (2). Не все элементы в некоторых свободных списках могут быть освобождены из-за конкретной реализации, в частности, с плавающей точкой.

...