Как вернуть данные из анализатора Python SAX?
Я пытался разобрать некоторые огромные XML-файлы, которые LXML не получит, поэтому я вынужден анализировать их с помощьюxml.sax
.
class SpamExtractor(sax.ContentHandler):
def startElement(self, name, attrs):
if name == "spam":
print("We found a spam!")
# now what?
Проблема в том, что я не понимаю, как на самом делеreturn
, или лучше,yield
вещи, которые этот обработчик находит для вызывающей стороны, не дожидаясь анализа всего файла. До сих пор я возился сthreading.Thread
а такжеQueue.Queue
, но это приводит ко всевозможным проблемам с потоками, которые действительно отвлекают меня от проблемы, которую я пытаюсь решить.
Я знаю, что могу запустить парсер SAX в отдельном процессе, но я чувствую, что должен быть более простой способ получить данные. Есть?