我有以下代码将在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()
答案 0 :(得分:3)
关于第一个函数 - 只需将所有内容放在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
答案 1 :(得分:2)
请注意,您的第二个函数不是递归 - 它永远不会触发递归深度错误。是的,planIncr
已传递给threading.Timer
,但未通过该调用执行。 planIncr
稍后由其他某个线程执行,并且以planIncr
开头的调用planIncr
的线程会立即返回。