来自 subprocess.communicate() 的流式输出
Python 的 subprocess.communicate() 函数对于捕获进程的标准输出非常有用。但是,它通常会立即返回所有输出。这对于长时间生成输出的流程来说可能会很不方便。为了解决这个问题,我们探索了一种以流式传输方式打印进程标准输出的每一行的技术。
解决方案
通过采用迭代机制,我们可以检索行标准输出一旦成为available:
from subprocess import Popen, PIPE # Launch a process with buffering set to 1 byte p = Popen(["cmd", "arg1"], stdout=PIPE, bufsize=1) # Iterate over the stdout lines as they become available with p.stdout: for line in iter(p.stdout.readline, b''): print(line, end='') # Wait for the process to terminate p.wait()
解释
附加说明
以上是如何在 Python 中逐行流式传输子进程输出?的详细内容。更多信息请关注PHP中文网其他相关文章!