daemon
一个表示这个线程是(True)否(False)守护线程的布尔值。一定要在调用 start() 前设置好,不然会抛出 RuntimeError 。初始值继承于创建线程;主线程不是守护线程,因此主线程创建的所有线程默认都是 daemon = False。
当没有存活的非守护线程时,整个Python程序才会退出
当只有被设定为 daemon = true的线程存活时,整个程序结束
import threading
import time
def read():
i = 0
while True:
print('i')
i += 1
time.sleep(1)
def write():
while True:
time.sleep(6)
break
def test():
while True:
print('n')
time.sleep(2)
if __name__ == '__main__':
print('test begin...')
tw = threading.Thread(target=write,daemon=True)
tr = threading.Thread(target=read, daemon=True)
tn = threading.Thread(target=test)
tw.start()
tr.start()
tn.start()
虽然我们定义了write在6秒后break,但整个程序没有结束。因为只有test的daemon是false.