您的位置:首页 > 编程语言 > Python开发

python递归深度报错--RuntimeError: maximum recursion depth exceeded

2018-03-10 18:35 567 查看
代码上传至https://github.com/gatieme/AderXCoding/blob/master/python/error/depth-exceeded.py

问题

这段时间用Python写了一个爬虫脚本,在抓取页面采用广度优先遍历抓取。但是当遍历到1000左右时就会出现莫名其妙的错误,

通过pdb调试发现是:
RuntimeError: maximum recursion depth exceeded




解析

发现python默认的递归深度是很有限的(默认是1000),因此当递归深度超过999的样子,就会引发这样的一个异常。

于是我们写了下面的代码进行测试,

在代码中函数func递归的调用自己,并且不退出

于是程序显然陷入一个死循环一样的递归

#!/usr/bin/env python
#coding=utf-8

import sys

def func(depth):
depth += 1
print "Now the depth is %d" % depth
func(depth)

if __name__ == "__main__" :

func(0)

程序运行的结果



我们可以捕获到开始异常的位置



我们可以看到当递归深度超过999达到1000的时候,引发了这个异常

解决的方式是手工设置递归调用深度,方式为

解决

可以修改递归深度的值,让它变大大一点
import sys
sys.setrecursionlimit(1000000) #例如这里设置为一百万

但是这个问题治标不治本,最好的办法还是优化自己的代码。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐