day46-守护线程

#1、守护线程要注意的坑:下面代码只能打印出子线程开始,无法打印出子线程执行完毕,因为主线程在t.start()以后就结束了,
#而子线程要睡眠1秒,所以子线程守护线程随着主线程的结束而结束了。
from threading import Thread
import time
def func():
    print('子线程开始')
    time.sleep(1)
    print('子线程执行完毕')

t = Thread(target=func)
t.setDaemon(True)
t.start()
# 子线程开始

#2、守护线程要注意的坑:关于join:
from threading import Thread
import time
def func():
    print('子线程开始')
    time.sleep(1)
    print('子线程执行完毕')

t = Thread(target=func)
t.setDaemon(True)
t.start()
t1 = Thread(target=func)
t1.start()
t1.join() #主线程等待t1子线程的结束而结束,守护线程t等待主线程的结束而结束。
# 子线程开始
# 子线程开始
# 子线程执行完毕
# 子线程执行完毕

#3、守护线程:守护线程随着主线程的结束而结束。
from threading import Thread
def func():
    while True:
        print('&')

t = Thread(target=func)
t.setDaemon(True) #守护线程要写在开始的前面。
t.start()
for i in range(10):
    print('*'*i)

你可能感兴趣的:(day46-守护线程)