在一个含有线程的python程序中,当主线程的代码运行完之后,如果还有其他子线程还未执行完毕,那么主线程会等待子线程执行完毕之后,再结束;如果有一个线程必须设置为无限循环,那么该线程不结束,意味着整个python程序就不能结束,那为了能够让python程序正常退出,将这类无限循环的线程设置为守护线程,当程序当中仅仅剩下守护线程时,python程序就能够正常退出,不必关心这类线程是否执行完毕,这就是守护线程的意义。
本篇从守护线程的创建、守护线程的继承、含有守护线程的程序退出与注意等介绍了python中的守护线程。
- 一个线程(非守护线程)可以通过两种方式设置为守护线程:
- 在创建完线程,启动线程之前,通过setDaemon(True)方法,将线程设置为守护线程
- 在利用Thread()构造线程时,将参数daemon设置为True,将线程设置为守护线程
- 必须在线程启动前(调用start())之前进行设置
def sub_thread():
print('hello world')
# 通过设置构造函数的参数daemon=True,将线程变为守护线程
t = threading.Thread(target=sub_thread, daemon=True)
# 通过属性.setDaemon=True,将线程变为守护线程
t.setDaemon(True)
# 必须在线程启动之前设置线程是否为守护线程
t.start()