You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python守护线程:程序何时终止运行?

Python守护线程:程序何时终止运行?

嘿,你的理解完全正确!Python的规则就是:当程序里只剩下守护线程在运行时,整个Python程序会直接终止,不管这些守护线程有没有完成任务——哪怕是你写的这种无限循环的守护线程也不例外。

咱们来拆解下你的代码例子:

import threading
import time

def daemonThread():
    while True:
        print("Sending Out Heartbeat Signal")
        time.sleep(2)

if __name__ == '__main__':
    daemonThread = threading.Thread(target=daemonThread)
    daemonThread.daemon = True
    daemonThread.start()
    print('finish')

运行后的输出是:

Sending Out Heartbeat Signal
finish

为什么程序没有一直输出心跳信号?因为主线程(也就是__main__对应的线程,默认是非守护线程)在启动守护线程后,很快执行到了print('finish'),这时候主线程的任务就完成了。此时程序里只剩下你标记为daemon的那个线程在运行,按照Python的规则,程序会立刻终止,不会等待守护线程的无限循环继续执行。

你看到的那一行心跳输出,是因为守护线程在主线程结束前,刚好完成了第一次循环里的print操作,还没来得及进入time.sleep(2)的等待或者下一次循环,程序就已经终止了。

备注:内容来源于stack exchange,提问作者user19551894

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 09:17:36