Ler saída ao vivo do processo em java

Inicio um script python no meu aplicativo java com

Process p = Runtime.getRuntime().exec("python script.py");

Este script é executado em um loop e é cancelado apenas por um evento (ou interação do usuário). O script grava na saída todo ciclo de loop, algum texto como "12:22:35 - Pulsação do coração"

while True:
  print("Heartbeat")
  time.sleep(1)

No meu aplicativo Java, quero ler esta saída como ela aparece. Meu problema é que, se eu usar o BufferReader, ele aguardará a conclusão do processo e, depois disso, lerá a saída. Aqui está como eu li:

BufferedReader is = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;

while ((line = is.readLine()) != null)
   System.out.println(line);

Como posso ler a saída "ao vivo"?

Para uma melhor compreensão: o script python escuta em um botão de hardware e, quando esse botão é pressionado, algumas saídas são gravadas. E no meu aplicativo java, quero mostrar essa mensagem e enviá-la para alguns clientes.

questionAnswers(3)

yourAnswerToTheQuestion