Leia de duas portas seriais de forma assíncrona

Eu gostaria de ler de duas (ou mais) portas seriais (/ dev / ttyUSB0 etc) ao mesmo tempo em python no Linux. Quero ler linhas completas de cada porta (o que tiver dados) e processar os resultados na ordem recebida (sem condições de corrida). Como um exemplo simples, basta escrever as linhas em um único arquivo mesclado.

Presumo que a maneira de fazer isso é baseada em pyserial, mas não consigo descobrir como fazê-lo. Pyserial tem leituras sem bloqueio usandoassíncio e usandotópicos. Asyncio é marcado como experimental. Suponho que não haveria condições de corrida se o processamento fosse feito emasyncio.Protocol.data_received(). No caso de threads, o processamento provavelmente teria que ser protegido por um mutex.

Talvez isso também possa ser feito não em pyserial. As duas portas seriais podem ser abertas como arquivos e depois lidas quando os dados estiverem disponíveis usandoselect().

questionAnswers(3)

yourAnswerToTheQuestion