Я пытался разобрать некоторые огромные 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 в отдельном процессе, но я чувствую, что должен быть более простой способ получить данные. Есть ли он?