Разница между del x и x = None для восстановления памяти? - PullRequest
0 голосов
/ 26 мая 2020

Я хотел бы освободить память переменной экземпляра в классе, обозначенном ниже self.x.

Следует ли мне использовать команду del self.x; или self.x=None? В чем будет их разница? Предполагая, что команда должна быть помещена в функцию __del__ или __exit___ класса.

1 Ответ

1 голос
/ 26 мая 2020

Первое, что необходимо понять, это то, что ни del self.x, ни self.x = None не освобождают много памяти. Что они оба делают, так это уменьшают счетчик ссылок объекта, на который ссылается self.x, на единицу. Затем, если счетчик этого объекта достиг 0, когда сборщик мусора будет работать, тогда память будет освобождена

Для разницы между ними вы не сможете прочитать значение self.x, поскольку del self.x удалит x из словаря экземпляра. self.x = None просто переназначает self.x объекту None.

...