gpt4 book ai didi

python - Python 脚本子进程输出的第一行无法立即可用

转载 作者:太空宇宙 更新时间:2023-11-03 17:58:03 24 4
gpt4 key购买 nike

我想从另一个 python 脚本执行 python 脚本。我正在使用:

你好.py
#! /usr/bin/env python
from time import sleep
print 'hello'
sleep(10)
print 'world!'

主机.py
#! usr/bin/env python
import shlex
from subprocess import PIPE, STDOUT, Popen

cmd = 'python hello.py'
p = Popen(shlex.split(cmd), stdout=PIPE, stderr=STDOUT)
for line in iter(p.stdout.readline, b''):
print line.rstrip()

但是,hello 会延迟 10 秒,而不是立即打印 hello 并在延迟 10 秒后打印 world

造成这种延迟的原因是什么?如何避免?

最佳答案

仅当 stdout 直接到终端时,行缓冲通常是隐式的 - 这意味着当它运行到管道时不是

将您已经看到的行为与以下行为进行比较:

print 'hello'
sys.stdout.flush() ## force the buffer the flush here
sleep(10)
print 'world!'

关于python - Python 脚本子进程输出的第一行无法立即可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28205551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com