Python: Есть ли способ обработать высокорекурсивные объекты без использования setrecursionlimit? - PullRequest
0 голосов
/ 14 июля 2020

для контекста, в настоящее время я пытаюсь использовать пакет all-history-rating , который позволяет нам ранжировать игроков в игре (или спорте) 1 на 1 после того, как мы уже добавили все игры. играл (аналогично системе ELO).

Итак, в моем проекте мне пришлось добавить около 1 700 000 игр, и для сохранения объекта я использовал метод save_base (path) из всей истории -rating пакет, который на самом деле использует рассол, как показано ниже:

def save_base(self, path):
    """saves the current state of the base to a file at "path"
        
    Args:
        path (str): the path where to save the base
    """
    pickle.dump([self.players,self.games,self.config["w2"]], open(path, 'wb'))

Но он вызывает следующую ошибку RecursionError: maximum recursion depth exceeded while pickling an object

Я попытался увеличить предел рекурсии с помощью sys.setrecursionlimit, но ошибка сохраняется до тех пор, пока я не достигну предела моей машины, что приводит к ошибке sh из Python.

Итак, как я могу решить эту проблему?

Большое спасибо.

...