Рубрики
Без рубрики

Python Daemon Thread.

Тема демона Python, Пример демона Python, Демон Python Dailing, Учебное посорение Python Daemon, Нить в Python, Python Dired Daide Pleense, использование

Автор оригинала: Pankaj Kumar.

В этом руководстве мы узнаем о нити Python Daemon. В нашем предыдущем уроке мы узнали о функции Python Getattr ().

Python Daemon Thread.

Начать с этого урока, вы должны иметь базовые знания о потоках. В основном существует два типа нити. Один это нить демона. Другой – это нить без демона.

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

Пример резьбы демона Python

У нас есть простая программа, где мы создаем два потока. Один из них займет больше времени, чтобы выполнить, потому что мы добавили сон в размере 2 секунд. Давайте запустим следующую программу и соблюдайте вывод.

import threading
import time


def print_work_a():
    print('Starting of thread :', threading.currentThread().name)
    time.sleep(2)
    print('Finishing of thread :', threading.currentThread().name)


def print_work_b():
    print('Starting of thread :', threading.currentThread().name)
    print('Finishing of thread :', threading.currentThread().name)

a = threading.Thread(target=print_work_a, name='Thread-a')
b = threading.Thread(target=print_work_b, name='Thread-b')

a.start()
b.start()

Вы получите вывод, как ниже.

Starting of thread : Thread-a
Starting of thread : Thread-b
Finishing of thread : Thread-b
Finishing of thread : Thread-a

Таким образом, оба нити выполняются, а затем основные потоки выходит и завершает программу.

Теперь мы сделаем Нить a как нить демона. Тогда вы увидите разницу в выходе. Итак, давайте отредактируем предыдущий код в следующем.

import threading
import time


def print_work_a():
    print('Starting of thread :', threading.currentThread().name)
    time.sleep(2)
    print('Finishing of thread :', threading.currentThread().name)


def print_work_b():
    print('Starting of thread :', threading.currentThread().name)
    print('Finishing of thread :', threading.currentThread().name)

a = threading.Thread(target=print_work_a, name='Thread-a', daemon=True)
b = threading.Thread(target=print_work_b, name='Thread-b')

a.start()
b.start()

Обратите внимание на дополнительный аргумент Демон = правда Создавая нить a. Вот как мы указываем нить как нить демона. Ниже приведено изображение, показывает вывод программы сейчас.

Обратите внимание, что программа выходит, хотя нить демона работала.

Когда темы демона полезны

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

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

Ссылка: Официальная документация