Можно ли ускорить парсинг ElementTree?

С помощью ElementTree разбираю xml-файлы разного размера примерно по такому принципу:

with open('filename.xml') as file:
    xml = ElementTree.fromstring(file.read())
offers = xml.findall('offer')

for offer in offers:
    do_smthng(offer)

Заметил, что чем больше элементов содержит offers, тем меньше итераций в секунду происходит. Есть ли какие-то способы парсить файлы так, чтобы скорость не зависела от размера объекта offers? И есть ли вообще какие-нибудь рекомендации по ускорению парсинга xml?


Ответы (1 шт):

Автор решения: Sergey Gornostaev

ElementTree - это DOM-парсер, они плохо подходят для больших файлов. Для больших объёмов предназначены SAX-парсеры.

→ Ссылка