- スレッド破棄のタイミング
- スレッドが正常終了時
- スレッド内でエクセプションがあり異常終了時
- デーモンスレッドはデーモンスレッド以外のスレッドがなくなった時点で全て自動終了する
- Thread中の動きを決定するには
- Threadオブジェクトを__init__(),run()のみオーバーライドする
- 呼び出し可能オブジェクトをコンストラクタに渡すのどちらか
import threading
import time
class test(threading.Thread):
def __init__(self,deamon=True):
super(test,self).__init__()
self.setDaemon(deamon)
self.i = 0
def run(self):
print "st:"
while True:
time.sleep(1)
self.i += 1
if self.i == 5 and not self.isDaemon():
print('-' * 20)
print('Non DaemonThread %s Aborted' % self.getName())
print(self.getName() + ':end')
print('-' * 20)
raise Exception
print("%s is a Daemon? [%s] ,count:[%s]" % (self.getName(),self.isDaemon(),str(self.i * 1)))
print('-' * 20)
print(self.getName() + ':end')
print('-' * 20)
if __name__ == "__main__":
t = test()
t.start()
t = test(False)
t.start()
time.sleep(3)
print('-' * 20)
print('main thread'+ ':end')
print('-' * 20)