Нить демона против нити не демона в python - PullRequest
0 голосов
/ 05 января 2020

У меня есть следующий код:

import threading 
from time import sleep

def print_function1():
    while True:
        print("Hi this is function 1\n") 
        sleep(2)

if __name__ == "__main__": 
    # creating thread 
    t1 = threading.Thread(target=print_function1 ) 

    t1.daemon = True

    # starting thread 1 
    t1.start() 

    sleep(10)

    # both threads completely executed 
    print("Done!") 

Теперь я не могу понять, какая разница, если я установлю, t1.daemon True или False, я выполняю код в spider I python console.

В обоих случаях программа, похоже, не закрывается, она продолжает печатать «Привет, это функция 1». Я предположил, что поток демона продолжит работу после завершения основного потока, но нормальный поток завершит работу.

Может кто-нибудь объяснить, пожалуйста.

1 Ответ

0 голосов
/ 06 января 2020

Эта проблема связана с тем, что при работе python кода в python оболочке наблюдается другое поведение потоков демонов, скажем, в моем случае я python в Spyder по сравнению с файлом python из командной строки, например "python thread_example.py ".

Запуск файла из командной строки дает ожидаемое поведение.

Можно сослаться на этот ответ stackoverflow: Python поток демона не завершается при выходе из родительского потока

...