我在管理 Python 中的无限 while 循环时遇到问题,我将在其中插入一个计时器作为一种“看门狗”。我试图更好地解释:脚本必须在串行通道上侦听并等待来自连接在通道另一侧的传感器的消息。我使用 while True 循环来执行此操作,因为脚本必须捕获所有正在传递的信号。然而,即使它可能是不必要的,我想插入一个计时器,它总是在每个循环中重置。因此,如果(例如)循环由于某种原因卡住,计时器将结束并退出程序。我以为我可以这样做:
def periodicUpdate():
exitTimer = threading.Timer(60.0, sys.exit())
while True:
exitTimer.start()
readData()
exitTimer.cancel()
现在,问题是当我启动脚本时它立即退出。似乎它sys.exit()
在所有其他内容之前读取,并且它不尊重计时器的构造,而只是在调用periodicUpdate 时它退出。为什么会这样?!我尝试更改语法,将 sys.exit 放在另一个函数中并调用该函数,我尝试了其他解决方案,但它总是以两种方式表现:它退出或表现为计时器不存在。有人能帮我吗?非常感谢