Отвечая на другой вопрос, кто-то показал мне следующее учебник, в котором автор утверждает, что использовал iterparse разобрать MB XML ~ 100 файлов менее чем за 3 секунды:Как долго должен проходить ElementTree iterparse?
http://eli.thegreenplace.net/2012/03/15/processing-xml-in-python-with-elementtree/
Я пытаюсь разобрать ап ~ 90 MB XML-файл, и у меня есть следующий код:
from xml.etree.cElementTree import *
count = 0
for event, elem in iterparse('foo.xml'):
if elem.tag == 'identifier' and elem.text == 'bar':
count += 1
elem.clear() # discard the element
print count
Она занимает около тридцати секунд ... даже не тот же порядок величины, как сообщается в учебнике я читать с помощью файла аналогичного размера, аналогичный алгоритм и тот же пакет.
Может кто-нибудь, пожалуйста, сообщите мне, что может быть неправильно с моим кодом, или какие различия я могу не заметить между моей ситуацией и учебником?
Я использую Python 2.7.3.
Добавление:
Я также использую разумно мощную машину, в случае, если кто думает, что может быть.
Я не думаю, что есть большое значение в сравнении XML файлов по размеру в одиночку. Я уверен в сложности внутренних структурных факторов. – TJD
Какой объем продукции существует? Отображение вывода на удивление медленное. –
Ну, в моем коде кода, очевидно, нет (и это все еще занимает много времени для запуска), но в коде, на котором я фактически пытаюсь работать, я отключил весь вывод (в частности, чтобы увидеть, замедляет ли это его действие). Это не так. – russell