Перегрузка памяти в Python lXml pretty_print - PullRequest
1 голос
/ 03 августа 2011

У меня плохо отформатированный XML-файл с объемом данных более 350 МБ. В основном все данные были объединены в одну строку. Я пытаюсь сделать это в новом файле, чтобы облегчить жизнь, но у меня проблемы с памятью. Я делаю что-то здесь не так и есть ли способ обойти это? Мой компьютер имеет 4 ГБ оперативной памяти и является четырехъядерным процессором i5-2410M (2,30 ГГц)

import os
from lxml import etree

parser = etree.XMLParser(remove_blank_text=True)
tree = etree.parse('filename',parser)
f = open('filename',"w")
f.write(etree.tostring(tree,pretty_print=True))
f.close()

1 Ответ

4 голосов
/ 03 августа 2011

Возможно, вы захотите попробовать использовать метод write напрямую с дескриптором файла, а не вызывать tostring. Измените эту строку:

f.write(etree.tostring(tree,pretty_print=True))

к этому:

tree.write(f, pretty_print=True)

Надеемся, это уменьшит использование памяти вдвое.

...