第十五章、并发编程之守护线程

第十五章、并发编程之守护线程

# 守护线程 守护的是非守护线程(主线程也是非守护进程)
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('主')

守护线程:非守护线程代码运行完毕,守护线程也就结束(守护的是非守护线程)

         主线程在其他非守护线程运行完毕后才算结束(守护线程在此时就会被回收

强调:主线程也是非守护线程(进程包含了线程)

总结:引入守护进程的原因是主线程的结束意味着进程结束,进程整体的资源都会被回收,而进程必须保证非守护线程都运行完毕后才能结束

守护进程和守护线程的区别

  • 守护进程:主进程代码运行完毕,守护进程也就结束
  • 守护线程:非守护线程运行完毕,守护线程结束

猜你喜欢

转载自www.cnblogs.com/demiao/p/11536608.html