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

Python继承Thread的自定义类中将线程daemon设为True的实现方法

解决方案

你尝试的三种设置守护线程的语法本身都是正确的,未生效通常是两个常见的实现错误导致的:一是自定义Editor类重写__init__方法时没有调用父类Thread的初始化逻辑,二是守护线程的设置时机在start()方法调用之后,线程启动后再修改守护属性不会生效。

以下是可正常运行的实现方案:

方案1:实例化时传入daemon参数

首先确保自定义类的__init__方法先调用父类初始化:

from threading import *

class Editor(Thread):
    def __init__(self, *args, **kwargs):
        # 必须优先调用父类Thread的初始化方法
        super().__init__(*args, **kwargs)
        # 此处添加你自己的初始化逻辑

if __name__ == "__main__":
    # 实例化时直接传daemon参数
    editor = Editor(daemon=True)
    # 必须在start方法调用前完成守护属性设置
    editor.start()

方案2:实例化后赋值daemon属性

if __name__ == "__main__":
    editor = Editor()
    # start方法调用前设置守护属性
    editor.daemon = True
    editor.start()

方案3:类内部默认设置守护属性

from threading import *

class Editor(Thread):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        # 内部直接设置默认守护属性
        self.daemon = True
        # 其他初始化逻辑

if __name__ == "__main__":
    editor = Editor()
    editor.start()

你可以在调用start()前打印editor.daemon验证属性是否设置成功。

内容的提问来源于stack exchange,提问作者Genius1512

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 23:00:03