0
私はpythonスレッドの "daemon"フラグを理解しようとしています。 私はスレッド:スレッドがジョブを終了する前に終了する
スレッドは「デーモンスレッド」としてフラグを立てることができることを知っています。この フラグの意味は、デーモンスレッド だけが残っていると、Pythonプログラム全体が終了するということです。初期値は作成スレッドから継承されます。
私の場合は、デーモンスレッドが残っていてスレッドが作業を終わらないうちに、Pythonプログラムが終了します。
def ThreadDecorator(f):
def wrap(*args,**kargs):
t=Thread(target=f,args=args,kwargs=kargs)
t.daemon=True
t.start()
return wrap
@ThreadDecorator
def runSomething(*args,**kwargs):
i = 0
attente = 0
fileName=kwargs['file']
f=open(fileName,'wt')
while i < 50000:
f.write(str(i)+"\n")
# attente += 0.2
# attente += random.randint(1, 60)/100
# time.sleep(attente)
i += 1
f.close()
return "Finished"
、メインプログラム
runSomething("5",file='test1.txt')
runSomething("6",file='test2.txt')
最初のスレッド二つ目は、私がメインブロックがpool
を含まなければならないと感じ、任意の数
引用は動作を説明する:メインのため
タスクは、以下のことが終了するポストを開始することです。メインスレッドが終了すると( 'runSomething'を呼び出す)、デーモンスレッドは終了/終了します。 – Holloway
だから私はそれらを偽とマークする必要がありますか? –
もしそれらが非デーモンスレッドから生成されていれば、それらはデフォルトでは 'False'ですが、完了するまで実行を続けたい場合はyesです。 – Holloway