Я получаю RuntimeError: maximum recursion depth exceeded
при попытке обработать высокорекурсивный объект дерева. Во многом как здесь.
Он решил свою проблему, установив более высокий предел рекурсии с помощью sys.setrecursionlimit
. Но я не хочу этого делать: я думаю, что это скорее обходной путь, чем решение. Потому что я хочу иметь возможность мариновать свои деревья, даже если в них есть 10 000 узлов. (В настоящее время он терпит неудачу на отметке 200.)
(Кроме того, истинный предел рекурсии для каждой платформы отличается, и я бы очень хотел избежать открытия этой банки с червями.)
Есть ли способ решить эту проблему на фундаментальном уровне? Если бы только модуль pickle обрабатывал с помощью цикла вместо рекурсии, у меня не было бы этой проблемы. Может быть, у кого-то есть идея, как я могу вызвать что-то подобное, не переписывая модуль pickle?
Любая другая идея, как я могу решить эту проблему, будет оценена по достоинству.