Leer desde dos puertos seriales de forma asincrónica

Me gustaría leer desde dos (o más) puertos serie (/ dev / ttyUSB0, etc.) al mismo tiempo en Python en Linux. Quiero leer líneas completas de cada puerto (cualquiera que tenga datos) y procesar los resultados en el orden recibido (sin condiciones de carrera). Como un simple ejemplo, podría escribir las líneas en un solo archivo combinado.

Supongo que la forma de hacer esto se basa en pyserial, pero no puedo entender cómo hacerlo. Pyserial tiene lecturas sin bloqueo utilizandoasyncio y usandohilos. Asyncio está marcado como experimental. Supongo que no habría condiciones de carrera si el procesamiento se realiza enasyncio.Protocol.data_received(). En el caso de subprocesos, el procesamiento probablemente tendría que estar protegido por un mutex.

Quizás esto también se puede hacer no en pyserial. Los dos puertos seriales pueden abrirse como archivos y luego leerse cuando los datos estén disponibles usandoselect().

Respuestas a la pregunta(3)

Su respuesta a la pregunta