Usando PySerial é possível esperar por dados?

Eu tenho um programa python que está lendo dados de uma porta serial através doPySerial módulo. As duas condições que preciso ter em mente são: não sei quantos dados serão gerados e não sei quando esperar dados.

Com base nisso, desenvolvi os seguintes snipets de código:

#Code from main loop, spawning thread and waiting for data
s = serial.Serial(5, timeout=5)  # Open COM5, 5 second timeout
s.baudrate = 19200

#Code from thread reading serial data
while 1:
  tdata = s.read(500)    # Read 500 characters or 5 seconds

  if(tdata.__len__() > 0):        #If we got data
    if(self.flag_got_data is 0):  #If it's the first data we recieved, store it
      self.data = tdata        
    else:                         #if it's not the first, append the data
      self.data += tdata
      self.flag_got_data = 1

Portanto, esse código fará um loop para sempre, obtendo dados da porta serial. Obteremos até 500 caracteres para armazenar os dados e, em seguida, alertaremos o loop principal definindo um sinalizador. Se nenhum dado estiver presente, voltaremos a dormir e esperaremos.

O código está funcionando, mas não gosto do tempo limite de 5s. Eu preciso disso porque não sei quantos dados esperar, mas não gosto que ele acorde a cada 5 segundos mesmo quando não há dados presentes.

Existe alguma maneira de verificar quando os dados ficam disponíveis antes de fazer oread? Estou pensando em algo como oselect comando no Linux.

EDITAR:
Apenas pensei em notar que eu encontrei oinWaiting() método, mas realmente parece que apenas mudar o meu "sono" para uma enquete, então não é isso que eu quero aqui. Eu só quero dormir até que os dados cheguem, então vá buscá-los.

questionAnswers(3)

yourAnswerToTheQuestion