Как вернуть данные из 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?

Проблема в том, что я не понимаю, как на самом деле вернуть, или, лучше, выдать, то, что этот обработчик находит вызывающему, не дожидаясь разбора всего файла. Пока что я возился с threading.Thread и Queue.Queue, но это приводит ко всем видам проблем с потоками, которые отвлекают меня от реальной проблемы, которую я пытаюсь решить.

Я знаю, что могу запустить парсер SAX в отдельном процессе, но я чувствую, что должен быть более простой способ получить данные. Есть ли он?

5
задан Fred Foo 15 January 2012 в 21:54
поделиться