Python: Как читать стандартный вывод из другого процесса без блокировки?

Во время выполнения процесса я хотел бы прочитать его стандартный вывод и записать его в файл. Однако любая моя попытка не удалась, потому что, что бы я ни пытался, как только я пытался читать из стандартного вывода, он блокировался до завершения процесса.

Вот фрагмент того, что я пытаюсь сделать. (Первая часть - это просто сценарий python, который что-то записывает в stdout.)

import subprocess

p = subprocess.Popen('python -c \'\
from time import sleep\n\
for i in range(3):\n\
    sleep(1)\n\
    print "Hello", i\
\'', shell = True, stdout = subprocess.PIPE)

while p.poll() == None:
    #read the stdout continuously
    pass

print "Done"

Я знаю, что существует несколько вопросов, касающихся одной и той же темы. Однако ни один из найденных мной не смог ответить на мой вопрос.

12
задан Woltan 3 May 2012 в 09:52
поделиться