Python можно запустить в цикле до RuntimeError: максимальная глубина рекурсии превышена при вызове объекта Python

Я запускаю рекурсивный цикл для достижения максимальной оптимизации для чего-то и достигаю точку, в которой код попадает в RuntimeError: maximum recursion depth exceeded while calling a Python objec t. Это ожидается, но я хочу остановить код прямо в точке до того, как он ударит по этой ошибке, поэтому я могу просмотреть свои данные в этот момент.

Возможно ли иметь петли while, говорящие что-то подобное этому? Что-то вроде «Эй, запустите этот цикл, пока не достигнете максимальной глубины рекурсии. По достижении, остановитесь и вернитесь».

Спасибо за помощь!

    Вы можете сделать следующее

     def recurse(): try: recurse() except RuntimeError as e: if e.message == 'maximum recursion depth exceeded while calling a Python object': # don't recurse any longer else: # something else went wrong 

    http://docs.python.org/tutorial/errors.html

    ПРИМЕЧАНИЕ. Возможно, стоит выяснить номер ошибки ошибки глубины рекурсии и проверить это вместо строки ошибки.

    Возможно, есть рекурсивный вызов в блоке try / except RuntimeError? Когда вызвано исключение, возвращаем значение.

    EDIT: Да, это возможно, например:

     def recursion(i): try: return recursion(i+1) except RuntimeError: return i a=0 print recursion(a) 

    Храните sys.maxrecursionlimit() как переменную (скажем maxrec ) в более глобальной области. Каждый раз, когда вы maxrec 1 из maxrec . Проверьте перед рекурсией, но убедитесь, что maxrec не равен 0 . Если maxrec достигает 0 , вы узнаете, что достигли предела рекурсии, и вы можете сбежать.

     def myFunc(params): # do stuff if maxrec <= 0: return # return whatever you need to if maxrec > 0: maxrec -= 1 myFunc(params) maxrec = sys.getrecursionlimit() myFunc(params) 

    Надеюсь это поможет