无论是进程还是线程,都遵循:守护xxx会等待主xxx运行完毕后被销毁
需要强调的是:运行完毕并非终止运行
守护线程
- !!! 如果子线程开启了守护模式,那么主线程运行完后立即干死子线程、而主线程要等未加守护的线程运行完毕
from threading import Thread
import time
def foo():
print(123)
time.sleep(1)
print("end123")
def bar():
print(456)
time.sleep(3)
print("end456")
if __name__ == '__main__':
t1=Thread(target=foo)
t2=Thread(target=bar)
t2.daemon = True # 只给t2加上守护
t1.start()
t2.start()
print("main-------")
# 主线程会等t1运行完了就死掉,所以t2会跟着死掉,即便只打印 一半
# 123
# 456
# main-------
# end123
互斥锁