Método sin bloqueo para analizar (transmitir) XML en python

Tengo un documento XML que llega a través de un socket que necesito analizar y reaccionar sobre la marcha (es decir, analizar un árbol parcial). Lo que me gustaría es un método de no bloqueo para hacerlo, de modo que pueda hacer otras cosas mientras espero que entren más datos (sin subprocesos).

Algo como iterparse sería ideal si terminara de iterar cuando el búfer de lectura estaba vacío, por ejemplo:

context = iterparse(imaginary_socket_file_wrapper)
while 1:
    for event, elem in context:
        process_elem(elem)
    # iteration of context finishes when socket has no more data
    do_other_stuff()
    time.sleep(0.1)

Supongo que SAX también sería una opción, pero iterparse parece más simple para mis necesidades. ¿Algunas ideas?

Actualizar:

El uso de hilos está bien, pero introduce un nivel de complejidad que esperaba eludir. Pensé que las llamadas no bloqueadas serían una buena manera de hacerlo, pero me parece que aumenta la complejidad de analizar el XML.

Respuestas a la pregunta(3)

Su respuesta a la pregunta