Python ValueError:不允许提高最大限制

Ric*_*bby 10 python memory stack-overflow

我在mac os 10.7.3上使用python 2.7.2

我在python中进行递归算法,递归级别超过50 000.

我试图将最大递归级别增加到1 000 000但我的python shell仍然在18 000递归级别后退出.

我试图增加可用资源:

import resource 
resource.setrlimit(resource.RLIMIT_STACK, (2**29,-1))
sys.setrecursionlimit(10**6)
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Traceback (most recent call last):
  File "<pyshell#58>", line 1, in <module>
    resource.setrlimit(resource.RLIMIT_STACK,(2**29,-1))
ValueError: not allowed to raise maximum limit
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我不能提高最高限额?

谢谢你的建议.

Win*_*ert 6

从python文档:

如果指定了无效资源,新软限制超出硬限制,或者进程尝试提高其硬限制(除非进程具有超级用户的有效UID),则引发ValueError.如果底层系统调用失败,也可能引发错误.

由此我猜你尝试新的软限制太大了.您可能需要将算法重写为迭代.Python并不是真的设计用来处理像这样的大规模递归.