此代码无效......
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
”。
我不知道它为什么不起作用......
答案 0 :(得分: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
时直接设置它的选项。