[英]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.