在终止前从派生的子进程中获取实时stdout数据,可以使用以下方法:
stdout=subprocess.PIPE
来捕获子进程的标准输出。import subprocess
# 创建子进程
process = subprocess.Popen(['command'], stdout=subprocess.PIPE)
# 循环读取子进程的输出
while True:
output = process.stdout.readline()
if output == b'' and process.poll() is not None:
break
if output:
print(output.strip())
# 等待子进程结束
process.wait()
communicate()
方法获取子进程的输出,并设置参数stdout=subprocess.PIPE
。import subprocess
# 创建子进程
process = subprocess.Popen(['command'], stdout=subprocess.PIPE)
# 获取子进程的输出
output, _ = process.communicate()
# 打印输出
print(output.decode())
这两种方法都可以实时获取子进程的stdout数据。需要注意的是,如果子进程的输出较多,可能会导致程序阻塞或内存占用过高,可以根据实际情况进行适当的优化。
推荐的腾讯云相关产品:腾讯云容器服务(Tencent Kubernetes Engine,TKE)
领取专属 10元无门槛券
手把手带您无忧上云