加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – pypy如何处理递归?

发布时间:2020-12-16 22:17:26 所属栏目:Python 来源:网络整理
导读:我有一个我在python中编写的脚本,它工作正常,但我很好奇,看看我是否可以加快它.它基本上是递归脚本. 如果我在普通的python 2.7中运行它,大约需要30秒.当我使用pypy运行相同的东西比我得到以下错误: RuntimeError: maximum recursion depth exceeded 我不确

我有一个我在python中编写的脚本,它工作正常,但我很好奇,看看我是否可以加快它.它基本上是递归脚本.

如果我在普通的python 2.7中运行它,大约需要30秒.当我使用pypy运行相同的东西比我得到以下错误:

RuntimeError: maximum recursion depth exceeded

我不确定pypy做什么不同,因为我没有修改脚本.

任何人都可以帮我理解发生了什么吗?

更新:
好吧我明白了.增加限制有帮助,但我认为我运行了错误的文件.我在bin目录下找到了一个名为py.py的文件并正在使用它.我不确定文件是做什么的,但它比普通的python慢??.我不得不搜索并发现’pypy-c’似乎现在正常工作.

最佳答案
正如您在更新中建议的那样,您的问题是您使用的是py.py(用于在CPython之上运行PyPy的解释器). PyPy通常具有比CPython更高的递归限制.您可以使用sys.setrecursionlimit()来增加递归限制,sys.getrecursionlimit()不提供实际的递归限制.

PyPy 1.6.0:

>>>> sys.getrecursionlimit()
100

>>>> def infinite(level=0):
....     print level
....     return infinite(level+1)
.... 

>>> infinite()

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读