Максимальная глубина рекурсии при использовании Pickle / cPickle

Фон: яm построение дерева для представления словаря, используя минимальный алгоритм построения. Список ввода представляет собой строки 4.3M utf-8, отсортированные лексикографически. Результирующий граф является ациклическим и имеет максимальную глубину 638 узлов. Первая строка моего скрипта устанавливает предел рекурсии в 1100 через.sys.setrecursionlimit()

Проблема: яЯ хотел бы иметь возможность сериализации моего дерева на диск, чтобы я мог загрузить его в память без необходимости перестраивать с нуля (примерно 22 минуты). Я пробовал обаpickle.dump() а такжеcPickle.dump(), как с текстовыми, так и с двоичными протоколами. Каждый раз я получаю трассировку стека, которая выглядит следующим образом:

  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 649, in save_dict
    self._batch_setitems(obj.iteritems())
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 663, in _batch_setitems
    save(v)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 725, in save_inst
    save(stuff)
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 286, in save
    f(self, obj) # Call unbound method with explicit self
  File "/System/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/pickle.py", line 648, in save_dict
    self.memoize(obj)
RuntimeError: maximum recursion depth exceeded

Мои структуры данных относительно просты:trie содержит ссылку на начальное состояние и определяет некоторые методы.dfa_state содержит логическое поле, строковое поле и словарь, отображающий метку в состояние.

я не очень знаком с внутренней работойpickle - должна ли моя максимальная глубина рекурсии быть больше / равна n раз глубине дерева для некоторого n? Или это может быть вызвано чем-то еще, что яя не в курсе?

Обновить: Установка глубины рекурсии до 3000не поможет, так что этот проспект невыглядит многообещающе.

Обновление 2: Вы, ребята, были правы; Я был близорук в предположении, что рассол будет использовать небольшую глубину вложения из-за ограничений рекурсии по умолчанию. 10000 сделали свое дело.

Ответы на вопрос(5)

Ваш ответ на вопрос