Python ficando sem memória ao analisar XML usando cElementTree.iterparse
Uma versão simplificada da minha função de análise XML está aqui:
import xml.etree.cElementTree as ET
def analyze(xml):
it = ET.iterparse(file(xml))
count = 0
for (ev, el) in it:
count += 1
print('count: {0}'.format(count))
Isso faz com que o Python fique sem memória, o que não faz muito sentido. A única coisa que estou armazenando é a contagem, um número inteiro. Por que está fazendo isso:
Veja essa queda repentina na memória e no uso da CPU no final? Esse é o Python travando espetacularmente. Pelo menos me dá umMemoryError
(dependendo do que mais estou fazendo no loop, isso gera mais erros aleatórios, como umIndexError
) e um rastreamento de pilha em vez de um segfault. Mas por que está falhando?