Python线程计时器初始守护进程

问题描述 投票:1回答:1

这段代码不行......

self._thread = threading.Timer(interval=2, 
                               function=self._sendRequestState, 
                               args=(self._lockState,), 
                               daemon=True).start()

所以我应该写下这样的..

self._thread = threading.Timer(interval=2, 
                               function=self._sendRequestState, 
                               args=(self._lockState,))
self._thread.daemon = True
self._thread.start()

Timer类有Thread.__init__Thread.__init__有“daemon”输入参数。我不知道它为什么不起作用......

python multithreading daemon
1个回答
1
投票

你可以找到threading.Thread()构造函数here的源代码(cpython,最常见的python实现):

def __init__(self, interval, function, args=None, kwargs=None):
    Thread.__init__(self)
    self.interval = interval
    self.function = function
    self.args = args if args is not None else []
    self.kwargs = kwargs if kwargs is not None else {}
    self.finished = Event()

如果你将daemon=True传递给它,那将被放入kwargs,但正如你在代码中看到的,它没有任何反应。所以是的,你是对的,你必须在创建之后设置daemon属性(并且在调用start()之前。在构造Timer时似乎没有选择直接设置它。

© www.soinside.com 2019 - 2024. All rights reserved.