Python线程定时器初始守护进程
Python threading timer initial daemon
此代码无效......
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
class 有 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
.
时直接设置
此代码无效......
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
class 有 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
.