当前位置: 首页 > 图灵资讯 > 行业资讯> Python守护线程及作用

Python守护线程及作用

发布时间:2025-10-13 17:53:28

后台运行有一个线程,其任务是为其他线程提供服务,称为“后台线程”(Daemon Thread)又称“守护线程”或“精灵线程”。Python 解释器的垃圾回收线程是典型的后台线程。

后台线程有一个特点,如果所有前台线程都死了,那么后台线程就会自动死亡。

调用 Thread 对象的 daemon 属性可以将指定的线程设置为后台线程。下面的程序将指定的线程设置为后台线程,当所有的前台线程都死亡时,后台线程就会死亡。当整个虚拟机中只剩下后台线程时,程序不需要继续运行,因此程序退出。

importthreading

#定义后台线程的线程执行体与普通线程没有区别
defaction(max):
foriinrange(max):
print(threading.current_thread().name+""+str(i))
t=threading.Thread(target=action,args=(100,),name='后台线程')
#将此线程设置为后台线程
#在创建Thread对象时,也可以通过daemon参数将其设置为后台线程
t.daemon=True
#启动后台线程
t.start()
foriinrange(10):
print(threading.current_thread().name+""+str(i))
#-----在这里执行程序,前台线程(主线程)结束------
#后台线程也应该结束

在上述程序中,先将 t 将线程设置为后台线程 10 行代码),然后启动线程。线程应该执行到 i 等于 99 只有在运行程序时才会结束,但不难发现后台线程无法运行 99.因为当主线程是程序中唯一的前台线程运行时,程序会主动退出,所以后台线程就结束了。

从上述程序可以看出,主线程默认为前台线程,T线程默认为前台线程。但并不是所有的线程都是前台线程,有些线程是后台线程。前台线程创建的子线程默认为前台线程,后台线程创建的子线程默认为后台线程。

可以看出,创建后台线程有两种方式:

线程的主动 daemon 属性设置为 True。

默认情况下,后台线程启动的线程是后台线程。

请注意,当前台线程死亡后,Python 解释器会通知后台线程死亡,但从接收指令到响应需要一定的时间。如果要将某个线程设置为后台线程,则必须在线程启动前设置。换句话说,它将 daemon 属性设为 True,必须在 start() 方法调用前进行,否则会引起 RuntimeError 异常。

相关文章

Python守护线程及作用

Python守护线程及作用

2025-10-13
Python sleep函数用法:线程睡眠

Python sleep函数用法:线程睡眠

2025-10-13
面向对象之深度优先和广度优先

面向对象之深度优先和广度优先

2025-10-13
Python Timer定时器:控制函数在特定时间执行

Python Timer定时器:控制函数在特定时间执行

2025-10-13
Python schedule任务调度及其用法

Python schedule任务调度及其用法

2025-10-13
Python fork方法:创建新进程

Python fork方法:创建新进程

2025-10-13