import time
from threading import Thread

def son():
    while True:
        print('in son')
        time.sleep(1)

def son2():
    for i in range(3):
        print('in son2****')
        time.sleep(1)
# 问从flag a 到 flag b 需要多长时间？ 答：0s多
# flag a
t = Thread(target=son)
t.daemon = True
t.start()
Thread(target=son2).start()
# flag b

# 主线程会等待子线程结束之后才结束
# 为什么？
    # 主线程结束进程就会结束
# 守护线程会随着主线程的结束而结束

# 守护线程会在主线程的代码结束之后继续守护其他子线程么? 会的

# 守护进程 会随着主进程的代码结束而结束
#     如果主进程代码结束之后还有其他子进程在运行,守护进程不守护
# 守护线程 随着主线程的结束而结束
#     如果主线程代码结束之后还有其他子线程在运行,守护线程也守护

# 为什么?
#     守护进程和守护线程的结束原理不同
#     守护进程需要主进程来回收资源
#     守护线程是随着进程的结束才结束的
#         其他子线程-->主线程结束-->主进程结束-->整个进程中所有的资源都被回收-->守护线程也会被回收

# 进程是资源分配单位
# 子进程都需要它的父进程来回收资源
# 线程是进程中的资源
# 所有的线程都会随着进程的结束而被回收的
