Carregar um arquivo de 41MB por ast.literal_eval causa MemoryError
Como analisar um arquivo grande usando ast.literal_eval sem causar MemoryError? Por exemplo, o arquivo que desejo analisar é de 41 MB.
Eu assisti o processo e descobri que o python consumia mais do que memória 3G. Estou usando um sistema de 32 bits, então depende da memória máxima do processo.
Por que ast.literal_eval consome tanta memória quanto apenas analisa para obter a estrutura de dados? Existe alguma maneira de reduzir o uso de memória?
A propósito, o código é:
import ast
file = open(file_name, 'r')
data = ast.literal_eval(file.read())
file.close()
a exceção é
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
Obrigado!