Загрузка 41 МБ файла с помощью ast.literal_eval вызывает MemoryError

Как проанализировать большой файл, используя ast.literal_eval, не вызывая MemoryError? Например, файл, который я хочу проанализировать, составляет 41 МБ.

Я наблюдал за процессом и обнаружил, что python занимает больше памяти, чем 3G. Я использую 32-битную систему, так что это зависит от максимальной памяти процесса.

Почему ast.literal_eval занимает столько памяти, сколько анализирует только структуру данных? Есть ли способ уменьшить использование памяти?

Кстати, код:

import ast
file = open(file_name, 'r')
data = ast.literal_eval(file.read())
file.close()

исключение

  File "/usr/local/lib/python2.7/ast.py", line 49, in literal_eval
    node_or_string = parse(node_or_string, mode='eval')
  File "/usr/local/lib/python2.7/ast.py", line 37, in parse
    return compile(source, filename, mode, PyCF_ONLY_AST)
MemoryError

Спасибо!

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

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