pythonにおけるdaemonの役割
1011 ワード
スクリプトの実行中にプライマリ・スレッドがあります.プライマリ・スレッドにサブスレッドが作成されると、プライマリ・スレッドが終了すると、サブスレッドdaemonのプロパティ値によって次の2つのケースが発生する可能性があります.
1.サブスレッドのdaemonプロパティがFalseの場合、メインスレッドの終了時にサブスレッドが終了したかどうかを検出し、サブスレッドがまだ実行されている場合、メインスレッドは完了してから終了するのを待っています.
2.サブスレッドのdaemonプロパティがTrueの場合、メインスレッドの実行終了時にこのサブスレッドをチェックせずに直接終了し、実行が完了したかどうかにかかわらず、すべてのdaemon値がTrueのサブスレッドがメインスレッドとともに終了します.
コードは次のとおりです.
結果:
コマンドプロンプト環境でこのプログラムが実行されると、スレッドt 2が実行終了せずにメインスレッドとともに終了するため、数値5が出力されないことがわかる
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が出力されないことがわかる