Captura a saída do programa C no stdout usando o subprocesso Python? Pexpecto?

Eu quero capturar a saída de um programa em C que estou lançando assim:

p = subprocess.Popen(["make", "run_pci"],
                     stdout=subprocess.PIPE,
                     cwd="/home/ecorbett/hello_world_pthread")
for ln in p.stdout:

O único problema é que eu não recebo saída até que o programa C esteja pronto, quando na verdade eu preciso obter uma linha por linha de saída enquanto o programa está sendo executado. E para complicar ainda mais, eu tenho que analisar cada linha (eu só preciso de certos dados de linhas).

Por exemplo, aqui está um exemplo de saída: (Eu preciso capturar "Thread on Tile #")

blahblah blah Thread blahblah blah tile 1: On 
blahblah blah Thread blahblah blah tile 2: OFF 
blahblah blah Thread blahblah blah tile 3 : Disable

Percebi que o artigo que eu relacionei abaixo parece ter o mesmo problema. Eu estava tentando descobrir como adaptá-lo à minha situação?

Obtendo a saída em tempo real do ffmpeg para ser usada na barra de progresso (PyQt4, stdout)

Newbie Python, por exemplo, o código é muito apreciado !!!

questionAnswers(2)

yourAnswerToTheQuestion