Skip to main content
 首页 » 编程设计

python之递归 Python 超时

2025年05月04日10落叶无声

我有一个脚本可以递归地分析链接中的 javascript,所以如果它找到一个 javascript,它就会分析该 javascript,如果它正在分析的 javascript 包含更多的 javascript,它就会继续分析,依此类推。但是,我遇到了这个递归永远不会停止的问题,有没有办法为这个递归添加超时?

请您参考如下方法:

Python 有一个内置的递归限制,如果超过这个限制将引发 RuntimeError。默认情况下,它的堆栈限制是 1000。所以:

try: 
    func_that_may_recurse_infinitely()   # i.e., your JavaScript crawler func 
except RuntimeError as e: 
    if "recursion" in str(e): 
        print "stop all the downloadin'!" 

如果您需要更深或更浅,您可以使用 sys.setrecursionlimit() 修改初始递归限制。

但是,更好的方法可能是保留您已经看到的项目的 set() 并简单地拒绝处理您已经处理过的任何项目。这可以防止您首先陷入递归情况。