Python中的计时器在多线程中如何工作?
如果我多次调用
Timer(.1, some_function, [some_arguments]).start()
背后到底发生了什么呢?
我们问题的根源是……
我们有一个方法,基本上是这样的:
def move(target):
force = calculateForce(target-getCurrentPosition())
if(force != 0)
setForce(force)
Timer(.1, moveCursor, [tx]).start()
else:
setForce(0)
在设置了强制执行后,我们需要在一段时间后检查一下是否应该停止。(这个信息是来自一个外部的物理设备,它不会主动发送事件。)
这个函数的执行时间有些奇怪,而且在一段时间后我们还会遇到“无法启动新线程”的错误。
这让我相信 Timer(...) 并不是重用线程,而是每次都创建一个新的线程。
再加上我认为我们使用的库不是线程安全的,这些错误就有点道理了……