繁体   English   中英

避免最大递归深度

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM