我有多个类实例,它们互相调用对方的函数。我还有一个系统,可以检测这些函数是否相互调用时间过长(以避免堆栈溢出)。然而,当它检测到这一点时,它没有办法真正停止它们,所以它们就一直运行,直到达到递归极限。这是一个更简单的例子。
class test:
def activateOther(self, other):
sleep(2)
print('Activated Other Function', id(self))
other.activateOther(self)
t = test()
t_ = test()
t.activateOther(t_)
del t, t_ # Even after deleting the variables/references, they continue running
有没有办法让这些函数不再无休止地运行 并达到递归极限?如果没有,我想我会尝试在每个类中添加一个变量来指示它们是否应该继续运行。
的确,这是一个典型的递归问题。在代码中必须有一个条件,什么时候停止递归。最简单的就是引入一个深度参数。
class test:
def activateOther(self, other, depth=0):
if depth > 88:
return
sleep(2)
print('Activated Other Function', id(self))
other.activateOther(self, depth + 1)
t = test()
t_ = test()
t.activateOther(t_)
实际的条件,以及是否 depth
计数器就可以了,当然这取决于你的应用。