我编写了一个从serial.serial对象继承的对象,并添加了一些方法。在一个无止境的循环中,程序从串行连接中获取信息。当有人关闭另一端的Divice时,SerialException会通知用户有问题并再次调用该函数。在大约300个错误之后,我得到了一个堆栈溢出致命错误
def endless():
try:
with serialObjectDerivedFromserial.Serial("/dev/tty/bsp") as bsp:
#doing somthing
except serial.SerialException:
#notify not connected
time.sleep(10)
endless()
except:
#notify error
您可以从自身调用
endless
。虽然它不是被禁止的(它是递归的基础),但每次调用都会消耗堆栈中的一点。因此,在多次调用之后出现堆栈溢出也就不足为奇了。正确的方法是将递归更改为迭代处理:相关问题 更多 >
编程相关推荐