Мне нужно написать парсер в Python, который может обрабатывать некоторые чрезвычайно большие файлы ( > 2 ГБ) на компьютере без большой памяти (всего 2 ГБ). Я хотел использовать iterparse в lxml, чтобы сделать это.
Мой файл имеет формат:
<item>
<title>Item 1</title>
<desc>Description 1</desc>
</item>
<item>
<title>Item 2</title>
<desc>Description 2</desc>
</item>
и до сих пор мое решение:
from lxml import etree
context = etree.iterparse( MYFILE, tag='item' )
for event, elem in context :
print elem.xpath( 'description/text( )' )
del context
К сожалению, хотя это решение все еще питается большой памятью. Я думаю, проблема заключается в том, что после работы с каждым "ITEM" мне нужно что-то сделать для очистки пустых детей. Может ли кто-нибудь предложить некоторые предложения о том, что я могу сделать после обработки моих данных для правильной очистки?