Демон распараллеливает объяснение

В документации Python это говорит:

Поток может быть отмечен как "поток демона". Значение этого флага состоит в том, что вся программа Python выходит, когда только потоки демона оставляют. Начальное значение наследовано от потока создания.

Делает у любого есть более четкое объяснение того, что это означает или практический пример, показывающий, где Вы установили бы потоки как daemonic?

Разъясните его для меня: так единственная ситуация Вы не установили бы потоки как daemonic, когда Вы хотите, чтобы они продолжили бежать за основными выходами потока?

223
задан ivanleoncz 3 September 2019 в 04:32
поделиться

4 ответа

Некоторые потоки делают фоновые задачи, как отправка пакетов проверки активности или выполнение периодической сборки "мусора", или что бы то ни было. Они только полезны, когда основная программа работает, и она должна хорошо уничтожить их однажды другой, недемон, потоки вышли.

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

422
ответ дан Chris Jester-Young 23 November 2019 в 03:59
поделиться

Скажем, Вы делаете некоторый виджет панели инструментов. Как часть этого, Вы хотите, чтобы он отобразил непрочитанное количество сообщения в Вашем электронном ящике. Таким образом, Вы делаете немного потока, который будет:

  1. Подключение к почтовому серверу и спрашивает, сколько непрочитанных сообщений Вы имеете.
  2. Сигнал GUI с обновленным количеством.
  3. Сон на некоторое время.

, Когда Ваш виджет запускает, он создал бы этот поток, назвал бы его демоном и запустил бы его. Поскольку это - демон, Вы не должны думать об этом; когда Ваш виджет выйдет, поток остановится автоматически.

26
ответ дан John Fouhy 23 November 2019 в 03:59
поделиться

Более простой способ думать об этом, возможно: когда основные возвраты, Ваш процесс не выйдет, если будут потоки недемона, все еще работающие.

Немного совета: Чистое завершение работы легко понять превратно, когда потоки и синхронизация включены - если можно избежать его, сделать так. Используйте потоки демона, когда это возможно.

14
ответ дан Jonathan 23 November 2019 в 03:59
поделиться

Другие плакаты дали некоторые примеры для ситуаций, в которых Вы будете использовать потоки демона. Моя рекомендация, однако, никогда не состоит в том, чтобы использовать их.

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

[еще 114] информация здесь:

https://joeshaw.org/python-daemon-threads-considered-harmful /

https://mail.python.org/pipermail/python-list/2005-February/343699.html

Строго говоря Вам никогда не нужны они, он просто делает реализацию легче в некоторых случаях.

15
ответ дан Joe Shaw 23 November 2019 в 03:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: