Python Glossary English

все Python 3sysфункция

sys.setrecursionlimit()

рекурсия

Устанавливает предел глубины рекурсии. Слишком большое значение может уронить процесс по переполнению стека — это не защита, а предохранитель.

Синтаксис

sys.setrecursionlimit(limit: int) -> None

Поднять предел — не значит починить бесконечную рекурсию: RecursionError лишь придёт позже, съев больше памяти, а слишком высокий предел на некоторых платформах может обрушить весь процесс по переполнению стека, уже без traceback. Опустить предел ниже текущей глубины тоже не выйдет — сам вызов поднимет RecursionError. Если алгоритм честно уходит вглубь на десятки тысяч шагов, его переписывают итеративно со своим стеком, а не крутят лимит.

Примеры

import sys
sys.setrecursionlimit(5000)
print(sys.getrecursionlimit())  # → 5000
sys.setrecursionlimit(1000)  # → возврат к стандарту

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности