Найти - Пользователи
Полная версия: Деструкторы
Начало » Python для новичков » Деструкторы
1
Evgeny
Столкнулся с ситуацией, в которой объекты ссылаются друг на друга, и, при выходе из программы,
их деструкторы не срабатывают. То есть не выполняются операторы в соотв. __del__(). Тут два вопроса:
- Таки программа “течет” или все же при выходе из интерпретатора срабатывает некий ReleaseAll?
- Какую тактику лучше использовать для отлова таких багов при отладке?
Андрей Светлов
1. Память течет. Объекты с __del__ не обрабатыватся garbage collector.
2. Не использовать __del__. Практически никогда не нужен. Подобие деструктора можно получить через weak reference с callback
Evgeny
>> 1. Память течет. Объекты с __del__ не обрабатыватся garbage collector.

То есть, даже если __del__ срабатывает, объект не удаляется?

>> 2. Не использовать __del__. Практически никогда не нужен. Подобие деструктора можно получить через weak reference с callback

А он мне и не нужен. Вопрос в чем? Если объекты, ссылающиеся друг на друга не удаляются, то
нужно эти ситуации как-то отлавливать.
Андрей Светлов
http://www.python.su/forum/viewtopic.php?pid=20139#p20139 и вообще вся ветка обсуждения.

http://guppy-pe.sourceforge.net/ - профайлер памяти.
Evgeny
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB