pythonにおけるdaemonの役割

1011 ワード

スクリプトの実行中にプライマリ・スレッドがあります.プライマリ・スレッドにサブスレッドが作成されると、プライマリ・スレッドが終了すると、サブスレッドdaemonのプロパティ値によって次の2つのケースが発生する可能性があります.
1.サブスレッドのdaemonプロパティがFalseの場合、メインスレッドの終了時にサブスレッドが終了したかどうかを検出し、サブスレッドがまだ実行されている場合、メインスレッドは完了してから終了するのを待っています.
2.サブスレッドのdaemonプロパティがTrueの場合、メインスレッドの実行終了時にこのサブスレッドをチェックせずに直接終了し、実行が完了したかどうかにかかわらず、すべてのdaemon値がTrueのサブスレッドがメインスレッドとともに終了します.
コードは次のとおりです.
#  Thread ,        

class mythread(threading.Thread):
    def __init__(self, num, threadname):
        threading.Thread.__init__(self, name=threadname)
        self.num = num



#  run()  
def run(self):
    time.sleep(self.num)
    print(self.num)

#          ,daemon   False

t1 = mythread(1, 't1')
t2 = mythread(5, 't2')

#      t2 daemon   True

t2.daemon = True

print(t1.daemon)
print(t2.daemon)

#    

t1.start()
t2.start()


結果:
False
True
1

Process finished with exit code 0

コマンドプロンプト環境でこのプログラムが実行されると、スレッドt 2が実行終了せずにメインスレッドとともに終了するため、数値5が出力されないことがわかる