不管是进程仍是线程,都遵循:守护xx会等待主xx运行完毕后被销毁。须要强调的是:运行完毕并不是终止运行。python
重点:守护线程守护的的是进程的运行周期,只要程序中全部非守护线程都结束后,守护线程才结束线程
from threading import Thread import time def sayhi(name): time.sleep(2) print('%s say hello' %name) if __name__ == '__main__': t=Thread(target=sayhi,args=('nick',)) t.setDaemon(True) #必须在t.start()以前设置 t.start() print('主线程') print(t.is_alive())
主线程
Truecode
from threading import Thread,enumerate,currentThread import time def task(): print('守护线程开始') print(currentThread()) time.sleep(20) print('守护线程结束') def task2(): print('子线程 start') time.sleep(5) print(enumerate()) print('子线程 end') if __name__ == '__main__': t1 = Thread(target=task) t2 = Thread(target=task2) t1.daemon = True t2.start() t1.start() print('主')
子线程 start
守护线程开始
主
<Thread(Thread-1, started daemon 4360)>
[<_MainThread(MainThread, stopped 15104)>, <Thread(Thread-2, started 15160)>, <Thread(Thread-1, started daemon 4360)>]
子线程 end进程