避免最大递归深度

2024-06-23 03:07:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码,将运行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()

在下面的代码中如何避免递归?我需要退出while循环,因为cur2值改变了。在

我的另一个问题是,由于我的代码需要24小时运行,从长远来看,下面的代码是否也会导致递归深度错误。在

^{pr2}$

Tags: 代码datetimedef错误opennowfileflag
2条回答

关于第一个函数-只需将所有内容放入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立即返回。在

相关问题 更多 >

    热门问题