Форум сайта python.su
Конструктор __init__ некоторого класса запускает дополнительный поток. Поток работает в бесконечном цикле по флагу. Предположил, что красиво было бы в деструкторе __del__ сбрасывать флаг и ожидать окончания потока. Но не тут то было. Деструктор просто перестал вызываться. Полагаю, что по причине наличия этого самого работающего потока. Как-нибудь можно это обойти или все же придется городить отдельный метод для остановки потока?
P.S. Python 2.7, WinXP
Офлайн
Прийдется городить. Это - принципиально.
Флажочек какой заведите. Или выкручивайтесь с weak reference. Явно - проще.
Офлайн
Большое спасибо!
Действительно, передача потоку слабой ссылки на метод решила проблему.
Для этого я заменил:
threading.Thread(target=self.method)
threading.Thread(target=weakref.ref(self.method))
Отредактировано (Сен. 15, 2010 14:47:27)
Офлайн
Так-таки заработало? Не верю.
Хотя бы потому что weakref.ref потребует дополнительного вызова для получения сильной ссылки по слабой - чего я у вас не вижу.
Офлайн
Вы правы. Перестал работать поток :(
Офлайн
Ну как, нашли решение?
Офлайн