Ładowanie pliku 41 MB przez ast.literal_eval powoduje błąd MemoryError

Jak przeanalizować duży plik za pomocą ast.literal_eval bez powodowania błędu MemoryError? Na przykład plik, który chcę przeanalizować, to 41 MB.

Obserwowałem ten proces i odkryłem, że python ma więcej niż pamięć 3G. Używam systemu 32-bitowego, więc zależy to od maksymalnej pamięci procesu.

Dlaczego ast.literal_eval zajmuje tak dużo pamięci, jak tylko analizuje, aby uzyskać strukturę danych? Czy jest jakiś sposób na zmniejszenie wykorzystania pamięci?

Nawiasem mówiąc, kod to:

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

wyjątkiem jest

  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

Dzięki!

questionAnswers(1)

yourAnswerToTheQuestion