我正在尝试使用 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 的输出直到最后吗?