9、守护父线程的子线程
author:14组开发周博文 欢迎各位老师与同学指导和指正!
在创建线程实例对象时,可以将参数
daemon
指定为True
,从而将创建的线程设置为守护线程。此外,也可以在调用线程实例的对象的方法start()
之前调用线程实例对象的方法setDaemon(True)
或者将属性daemon
的值设置为True
,从而将线程设置为守护线程。守护线程是为了守护父线程而存在的子线程,当父线程结束时,守护线程就没有存在的意义了,因此,守护线程会随着父线程的结束而立刻结束。
import time
from threading import Thread, current_thread
class MyThread(Thread):
def run(self):
print(f"子线程 {current_thread().getName()} 启动")
time.sleep(2)
print(f"子线程 {current_thread().getName()} 结束")
def main():
print(f"父线程 {current_thread().getName()} 启动")
mt = MyThread()
mt.daemon = True
# 或者
# mt.setDaemon(True)
mt.start()
time.sleep(1)
print(f"父线程 {current_thread().getName()} 结束")
if __name__ == "__main__":
main()
运行结果
父线程 MainThread 启动 子线程 Thread-1 启动
父线程 MainThread 结束
- 运行结果可以看出,不管守护子线程是否运行结束,当父线程运行结束后,守护子线程会立刻停止运行。