读取标准输出时陷入死锁 - Popen 和子进程

问题描述 投票:0回答:0

我正在尝试使用 python 子进程模块来管理进程。

假设我有一个永远运行并每秒打印的Python脚本

Running x seconds.
。 5 秒后,应用程序询问我是否应该继续。

我想使用

Popen
运行此过程。

process = subprocess.Popen(['python3', 'test.py'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    text=True)
# Now the process is running, I want to read all the stdout
lines = []
while True:
   line = process.stdout.readline() # when there is nothing more to read the readline is just stuck in deadlock
   if not line:
       break # nothing more to read
   lines.append(line)

但如示例中所述,当在 readline() 没有更多内容可读取的情况下读取正在运行的进程的标准输出时,readline 陷入死锁。

有什么办法我们可以读取 stdout 的输出直到最后吗?

python process subprocess python-multiprocessing
© www.soinside.com 2019 - 2024. All rights reserved.