[英]Avoding maximum recursion depth
我有以下代码,它们将在24小时内运行,但是只有在10-20分钟后,我才遇到错误,达到了最大递归深度。 我的代码如下
def startEnd():
flag = 0
f = open('file')
lq = f.readlines()
cur2 = lq[0]
cur1 = datetime.datetime.now()
while flag == 0:
if cur1 == cur2: # cur2 is datetime read from file
q.put(True)
flag = 1
else:
flag = 0
startEnd()
如何避免以下代码中的递归? 由于cur2值更改,我需要退出while循环。
我的另一个问题是,由于我的代码需要24小时运行,因此从长远来看,以下代码也将导致递归深度错误。
def planIncr():
f=open('input.txt')
lines=f.readlines()
cycle_time = int(lines[1])
f.close()
q2.put(True)
threading.Timer(cycle_time, planIncr).start()
关于第一个功能-只需将所有内容放入while循环中即可:
def startEnd():
while True:
flag = 0
f = open('file')
lq = f.readlines()
cur2 = lq[0]
cur1 = datetime.datetime.now()
while flag == 0:
if cur1 == cur2: # cur2 is datetime read from file
q.put(True)
flag = 1
else:
flag = 0
请注意,您的第二个函数不是递归的-它永远不会触发递归深度错误。 是的, planIncr
传递给threading.Timer
,但未通过该调用执行 。 planIncr
稍后由其他某个线程执行,并且调用planIncr
的线程首先看到planIncr
返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.