長くて時間のかかる出力を生成するプロセスから読み取ろうとしています。ただし、生成されたときに出力をキャッチしたいと思います。しかし、次のようなものを使用すると、コマンドの出力がバッファリングされているように見えるため、出力行を一度に取得することになります。
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, bufsize=0)
for line in p.stdout:
print line
MacOS 10.5でこれを試しています