Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Использование threading python demon в многопоточном программировании

  1. Использование threading python demon в многопоточном программировании

    Привет, ребята! Пытаюсь разобраться с использованием threading python demon для создания фоновых потоков, которые не должны блокировать завершение программы. Кто-нибудь может объяснить, как это работает и показать пример кода? Заранее спасибо!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Да, демоны очень полезны при работе с потоками. Они автоматически завершаются при остановке главного потока. Вот пример:

    Программный код:
    import threading
    import time

    def background_task
    ():
        while 
    True:
            
    time.sleep(1)
            print(
    "Фоновая задача работает")

    thread threading.Thread(target=background_task)
    thread.setDaemon(True)
    thread.start()

    print(
    "Главный поток завершился")
    time.sleep(2
    Надеюсь, это поможет тебе понять!

  4. Цитата Сообщение от Елена Валентиновна
    Да, демоны очень полезны при работе с потоками. Они автоматически завершаются при остановке главного потока. Вот пример:

    Программный код:
    import threading
    import time

    def background_task
    ():
        while 
    True:
            
    time.sleep(1)
            print(
    "Фоновая задача работает")

    thread threading.Thread(target=background_task)
    thread.setDaemon(True)
    thread.start()

    print(
    "Главный поток завершился")
    time.sleep(2
    Надеюсь, это поможет тебе понять!
    О, спасибо за пример! А если убрать setDaemon(True), что произойдет?

  5. Дружище, демоны не блокируют главную программу, это и классно. Чтобы создать демон-поток, достаточно вызвать setDaemon(True). Пример кода выше отлично объясняет.
    Удачи в кодинге!

  6. Цитата Сообщение от JuliaRanger
    Дружище, демоны не блокируют главную программу, это и классно. Чтобы создать демон-поток, достаточно вызвать setDaemon(True). Пример кода выше отлично объясняет.
    Удачи в кодинге!
    Крутяк! То есть, если я не вызову setDaemon(True), поток будет ждать завершения задачи перед выходом?

  7. Как насчет использования concurrent.futures? Оно позволяет легко создавать демоны. Правда, не такой низкоуровневый контроль, как с threading.

    Программный код:
    import concurrent.futures
    import time

    def background_task
    ():
        while 
    True:
            
    time.sleep(1)
            print(
    "Работает фон")

    executor concurrent.futures.ThreadPoolExecutor()
    future executor.submit(background_task)
    future.cancel()  # Прекратит выполнение задачи

    time.sleep(2

  8. Цитата Сообщение от Siryn
    Как насчет использования concurrent.futures? Оно позволяет легко создавать демоны. Правда, не такой низкоуровневый контроль, как с threading.

    Программный код:
    import concurrent.futures
    import time

    def background_task
    ():
        while 
    True:
            
    time.sleep(1)
            print(
    "Работает фон")

    executor concurrent.futures.ThreadPoolExecutor()
    future executor.submit(background_task)
    future.cancel()  # Прекратит выполнение задачи

    time.sleep(2
    Отлично, яркий пример! Всё же, вроде бы, больше контроля через threading, правда?

  9. Воу, демоны и threading — тема! Много раз так использовал для логов и мониторинга. Пример от других вообще топ. Ток смотри, если забудешь setDaemon(True), зависишь. Всё проще, чем кажется!

  10. Цитата Сообщение от Вика
    Воу, демоны и threading — тема! Много раз так использовал для логов и мониторинга. Пример от других вообще топ. Ток смотри, если забудешь setDaemon(True), зависишь. Всё проще, чем кажется!
    Понял тебя. Логи и мониторинг — вот это точно кейс! Зависать программа это нехорошо)

Страница 1 из 2 12 ПоследняяПоследняя