Threading Python #2. Потоки демоны, как они работают и где стоит применять

Threading Python #2. Потоки демоны, как они работают и где стоит применять

ZProger [ IT ]

2 года назад

17,895 Просмотров

Ссылки и html тэги не поддерживаются


Комментарии:

ZProger [ IT ]
ZProger [ IT ] - 22.10.2021 12:30

Как часто вы используете daemon thread в своих проектах?

Ответить
Kondrakar Kr
Kondrakar Kr - 07.05.2023 18:22

Поток демон - зависящая конструкция от работы основной программы, выражающаяся в своей жизнедеятельности только в момент работы основной программы.
Примеры:
1) проверка лицензионного ключа ПО, когда она запущенна.
2) Прослушка по ключевым фразам: любой голосовой ассистент
3) Ну и сами демоны: службы, работающие только при работе unix-подобных ОС. В принципе, как и обычные службы Windows. Естественно, не все работают в потоке (возможно даже таких и нет)

Ответить
Дим Димыч
Дим Димыч - 25.04.2023 17:35

Бляяя,так тебя смотрят чтобы понять как убрать данный поток.А ты в итоге ,даешь ему шанс)))))))

Ответить
Fragment
Fragment - 06.03.2023 16:12

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

Ответить
Alikhan
Alikhan - 07.02.2023 20:33

Спасибо большое за подробное разъяснение!

Ответить
Konstantin Svizhak
Konstantin Svizhak - 15.01.2023 14:12

Тот случай, когда после первого урока химичил конструкцию
if threading.main_thread().is_alive():

Чтобы после завершения программы все потоки умирали, а на втором уроке это делается одним флагом True/False 🤦‍♂🤦‍♂
Спасибо за урок😉

Ответить
Uarsa
Uarsa - 13.01.2023 18:33

спасибо, выручил)

Ответить
PolarBearPtogramming
PolarBearPtogramming - 20.11.2022 19:56

Демон - это контролер который останавливает все потоки, после завершение основного потока

Ответить
Калиновський【Nakamura Akira】Валентин
Калиновський【Nakamura Akira】Валентин - 04.10.2022 11:31

А, так вот что такое демон... Они мне нужны в моей программе!

Ответить
Andrey R
Andrey R - 14.09.2022 10:52

Создал приложение, в котором из основного потока создается и запускается поток демон(в демоне запускается tcp сервер с asyncio). Основной поток после запуска демона, уходи в бесконечный цикл и спит там, похрапывая каждую секунду "while True: sleep(1)". Запускаю pyinstaller, создаю .exe, все ок. Запускаю .exe - вижу две задачи. Одна задача, жрет 1 МБ оперативки а другая 36 МБ оперативки. Теперь, если я завершаю не жирную задачу, та что 1 МБ жрет то жирная остается работать, и даже выполнять все свои функции - принимает обрабатывает и отвечает. Если я завершаю жирную задачу, то и не жирная завершается автоматически. Создание экземпляров классов для обработки данных идет в основном потоке. В потоке демон, как уже писал выше, запуск TCP сервера с использованием asyncio. Делаю вывод что тот жирный поток - основной поток, а не жирный - только сервер, который принимает и отправляет на обработку данные, в объекты, которые созданы в основном потоке. Теперь когда я запускаю этот .exe как службу, а после останавливаю и удаляю службу - в процессах висит жирный поток, выполняет свои функции, а служба уже удалена. Вопрос: что я делаю не так? или это ожидаемое поведение? я ожидал что после остановки службы будут завершены все процессы, которые запустил мой .exe .

Ответить
Глеб Ставинский
Глеб Ставинский - 06.09.2022 17:47

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

Ответить
Parviz Norov
Parviz Norov - 04.08.2022 12:33

поясните пожалуйста один моментик. Когда я запустил поток трединг, он выполнился одновременно с основным потокос который выводит finish. однако вывод первой иттерации потока трединг и finish вывелись у меня на одной строчке в консоли и даже без пробела. Объясните пожалуйста с чем это связано и как сделать так чтобы finish выводился на отдельной строчке. Я написал перед выводом finish простой print(). Он решил проблему, но тогда все остальные вывода трединга сместились, нет ли какой нибудь альтернативы?

Ответить
Альберт Иванов
Альберт Иванов - 31.05.2022 11:14

поток демон — это на самом деле поток Димон. и как любой Димон он завершается сразу, как только попросишь его вернуть денежный долг.

Ответить
Geforce Rtx
Geforce Rtx - 19.03.2022 09:26

Поток демон - это поток как бы привязанный к текущему процессу но работающий в фоне с mainthread если процесс закрывается то это демон тоже)

Ответить
Vicki Brown
Vicki Brown - 29.01.2022 16:17

Можно применять если к примеру у тебя бесконечный цыкл

Ответить
Антон Шавермин
Антон Шавермин - 16.11.2021 06:13

шик и блеск)) лайк вам от СЕООНЛИ

Ответить
Vasyl Pavliuk
Vasyl Pavliuk - 31.10.2021 14:39

Демон это поток, который прекращает работу когда завершается выполнение основного потока.

Ответить
арслан давлетов
арслан давлетов - 23.10.2021 21:00

Такой вопрос python может работать с драйверами. Например включать, выключать драйвер сетевой карты на пк?

Ответить
Евгений Ш.
Евгений Ш. - 22.10.2021 17:49

демон по сути фоновый поток, даже по-моему может жить без основного. Использование, тот же аналог крона.

Ответить
Роман Яровой
Роман Яровой - 22.10.2021 12:49

В названии написано, что объясните где применять - но объяснения так и не последовало)

Ответить