How to set the recursion limit in Python
What is the recursion limit?
Recursion is a process by which a function calls itself, directly or indirectly. Every time a function is invoked, a new frame is added to the stack.
To avoid infinite recursion leading to the overflowing of the stack, every programming language has a recursion limit. This limit varies is programming languages and is platform dependent.
The sys module
The sys module provides access to the system-specific parameters and functions that interact and are maintained by the Python interpreter.
The setrecursionlimit() method
The setrecursionlimit() method of the sys module sets the maximum recursion depth of the Python interpreter.
Note: Depending on the program and platform, we can set a higher recursion limit. However, very high limits can cause the interpreter to crash.
This method raises a RecursionError when the given limit is too low at the current recursion depth.
Syntax
setrecursionlimit(limit)
Parameters
limit: This is the new value of the recursion limit.
Code
import sysplatform = sys.platformrecur_limit = sys.getrecursionlimit()print("The recursion limit for %s platform is %s" % (platform, recur_limit))sys.setrecursionlimit(2000)new_recur_limit = sys.getrecursionlimit()print("The new recursion limit for %s platform is %s" % (platform, new_recur_limit))
Explanation
- Line 1: We import the
sysmodule. - Line 3: We obtain the current operating system using the
sys.platformconstant. - Line 4: We obtain the maximum recursion depth using the
sys.getrecursionlimit()method. - Line 5: We print the current operating system and the recursion limit.
- Line 7: We set the recursion limit to
2000. - Line 8: We obtain the new maximum recursion depth using the
sys.getrecursionlimit()method. - Line 9: We print the current operating system and the new recursion limit.