这段代码不行......
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
”输入参数。我不知道它为什么不起作用......
你可以找到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
时似乎没有选择直接设置它。