哪个更优化,无限递归或无限循环?

时间:2018-01-09 22:52:00

标签: python loops recursion optimization

我在Python中创建一个应该在后台运行的应用程序,在系统剪贴板上进行持续检查。为了实现这一点,我有一个方法进行检查,然后在指定的延迟(无限递归)后调用自身。但是,我想知道实现无限循环而不是递归是否更优化。

我的第一直觉是循环可能更好,因为它不会保留任何指向前一个函数调用的指针 - 但我并不确定。

简而言之,这是更优化的:

def recursive(interval):
    performChecks()
    updateGUI()
    wait(interval)
    recursive(interval)

或者是这个

def main():
    running = True
    while running:
        performChecks()
        updateGUI()
        wait(interval)

1 个答案:

答案 0 :(得分:2)

在Python中,您应该更喜欢第二个版本。这是因为调用堆栈默认限制为:

>>> import sys
>>> sys.getrecursionlimit()
1000

因此,您的第一种方法将在1000次迭代后崩溃。