我正在为 CLI 应用程序编写图形界面。为此,我想通过管道获取其终端输出实时。
问题是,虽然管道的内容足够接近终端输出,但它只能以大块的形式到达;有时,程序的整个输出只有在程序终止时才会到达。在终端中执行程序时,输出会实时到达。
“分块”行为发生在不同的消费者身上(subprocess.Popen
具有不同配置的 Python,重定向到文件并用 显示tail
,通过管道传输到 cat),因此不太可能是特定消费者的问题。
为什么会发生这种分块?有没有办法从 Python 中刷新应用程序的缓冲区?是否有一些 Windows 或 Python 工具可以模拟程序的终端,然后通过管道推送输出?