Interceptando o stdout de um subprocesso enquanto ele está executando

Se este é o meu subprocesso:

import time, sys
for i in range(200):
    sys.stdout.write( 'reading %i\n'%i )
    time.sleep(.02)

E este é o script que controla e modifica a saída do subprocesso:

import subprocess, time, sys

print 'starting'

proc = subprocess.Popen(
    'c:/test_apps/testcr.py',
    shell=True,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE  )

print 'process created'

while True:
    #next_line = proc.communicate()[0]
    next_line = proc.stdout.readline()
    if next_line == '' and proc.poll() != None:
        break
    sys.stdout.write(next_line)
    sys.stdout.flush()

print 'done'

Por que éreadline ecommunicate esperando até o processo terminar? Existe uma maneira simples de passar (e modificar) o stdout do subprocesso em tempo real?

BTW, eu já viist, mas não preciso dos recursos de registro (e não me incomodei em entender muito disso

Estou no Windows XP.

questionAnswers(2)

yourAnswerToTheQuestion