Search code examples
pythonmemorystack-overflow

Python ValueError: not allowed to raise maximum limit


I'm using python 2.7.2 on mac os 10.7.3

I'm doing a recursive algorithm in python with more than 50 000 recursion levels.

I tried to increase the maximum recursion level to 1 000 000 but my python shell still exit after 18 000 recursion levels.

I tried to increase the resources available :

import resource 
resource.setrlimit(resource.RLIMIT_STACK, (2**29,-1))
sys.setrecursionlimit(10**6)

and I get this error :

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

I don't know why I cannot raise the maximum limit ?

thanks for your suggestions .


Solution

  • From the python documentation:

    Raises ValueError if an invalid resource is specified, if the new soft limit exceeds the hard limit, or if a process tries to raise its hard limit (unless the process has an effective UID of super-user). Can also raise error if the underlying system call fails.

    From this I guess that your attempt new soft limit is too large. You probably need to rewrite you algorithm to be iterative. Python's not really designed to handle massive recursion like this.