【发布时间】:2016-07-18 08:51:09
【问题描述】:
我有下面的代码从子进程读取数据作为它生成并写入文件。
从子流程导入 Popen, PIPE proc = Popen('..some_shell_command..', shell=True, stdout=PIPE) fd = open("/tmp/procout", "wb") 而真: 数据 = proc.stdout.read(1024) 如果长度(数据)== 0: 休息 fd.write(数据) fd.close()'Popen' 默认 bufsize 为 0 => 无缓冲。如果由于某种原因写入文件操作经历了巨大的延迟,会发生什么?
- 假设子进程应该产生 500GB 的数据,是否所有这些数据都存储在内存中,直到父进程全部读取它们? (或)
- 子进程是否会等待父进程读取 1024 字节的数据,然后再将下一个 1024 字节写入标准输出? (或)
- 子进程会在操作系统管道缓冲区填满后等待,一旦父进程读取,子进程会再次恢复写入吗? (或)
- ??
【问题讨论】:
标签: python pipe subprocess buffer