0
子プロセスからのデータを生成してファイルに書き込むために、以下のコードを読んでいます。pythonサブプロセスパイプバッファリングされていない動作
from subprocess import Popen, PIPE proc = Popen('..some_shell_command..', shell=True, stdout=PIPE) fd = open("/tmp/procout", "wb") while True: data = proc.stdout.read(1024) if len(data) == 0: break fd.write(data) fd.close()
'Popen'のデフォルトのbufsizeは、0 =>バッファなしです。なんらかの理由でファイルへの書き込み操作に大きな遅延が発生した場合はどうなりますか?
- 子プロセスが500GBのデータを生成すると仮定すると、すべてのデータは親がそれらをすべて読み取るまでメモリに格納されますか? (OR)
- 子プロセスは、次の1024バイトをstdoutに書き込む前に、1024バイトのデータが親によって読み込まれるのを待ちますか? (OR)
- OSパイプバッファがいっぱいになった後に子プロセスが待機し、親プロセスが読み込まれると、子プロセスは再び書き込みを再開しますか? (OR)
- ??ご質問に答える