Какая разница, когда я устанавливаю поток Python в качестве демона - PullRequest
11 голосов
/ 11 сентября 2009

Какая разница, когда я устанавливаю поток Python в качестве демона, используя thread.setDaemon(True)?

1 Ответ

23 голосов
/ 11 сентября 2009

Поток демона не будет препятствовать выходу приложения. Программа заканчивается, когда завершаются все потоки, не являющиеся демонами (включая основной поток).

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

Например, если вы пишете приложение с графическим интерфейсом, и пользователь закрывает главное окно, программа должна выйти. Но если у вас есть не демонические потоки, это не так.

Из документов: http://docs.python.org/library/threading.html#threading.Thread.daemon

Его начальное значение наследуется от создание потока; основная нить не является потоком демона и, следовательно, все темы, созданные в основной теме по умолчанию daemon = False.

Вся программа Python завершается, когда не осталось живых потоков, не являющихся демонами.

...