Propriedade do daemon de encadeamento Python
Estou um pouco confuso sobre o que significa definir um thread para ser um daemon. A documentação diz o seguinte:
Um encadeamento pode ser sinalizado como um "encadeamento daemon". O significado desse sinalizador é que o programa Python inteiro é encerrado quando apenas os threads do daemon são deixados. O valor inicial é herdado do segmento de criação. O sinalizador pode ser definido através da propriedade daemon.
Não sei o que torna isso diferente de um tópico normal. Isso está dizendo que este programa nunca terminará?
def threadfunc():
while True:
time.sleep(1)
threading.Thread(target=threadfunc).start()
mesmo que o thread principal termine sua execução. Enquanto
def threadfunc():
while True:
time.sleep(1)
th = threading.Thread(target=threadfunc)
th.daemon = True
th.start()
terminará imediatamente?
Eu pergunto porque eu tenho uma situação em que no meu thread principal estou chamando sys.exit (), e o processo simplesmente trava e meus outros threads estão em execução, como posso ver no log. Isso tem algo a ver com sys.exit () sendo chamado com threads ativos?