Python中的实时输出

Python中的实时输出,python,python-2.7,Python,Python 2.7,在我的python代码中,有: print "Hello" time.sleep(20) print "world" 我希望输出为 Hello 20秒后 world 但是Hello和world在控制台中同时打印 您的代码在我的计算机中工作。打印完hello import sys sys.stdout.flush() print运算符有效地将sys.stdout流用于缓冲的输出。 对于实时输出,您需要使用未缓冲的sys.stderr流: import sys, time sys.stde

在我的python代码中,有:

print "Hello"
time.sleep(20)
print "world"
我希望输出为

Hello 
20秒后

world

但是
Hello
world
在控制台中同时打印

您的代码在我的计算机中工作。打印完
hello

import sys
sys.stdout.flush()

print
运算符有效地将
sys.stdout
流用于缓冲的输出。 对于实时输出,您需要使用未缓冲的
sys.stderr
流:

import sys, time
sys.stderr.write("Hello ")
time.sleep(20)
sys.stderr.write("world\n")
或者,您可以在每次想要获得输出时通过调用
sys.stdout.flush()
手动刷新流缓冲区,但我建议您不要这样做,除非您知道自己在做什么


有关更多详细信息,请参见。

确保您已从python导入了时间库,并在两个版本的python上尝试它,以查看是否会遇到相同的错误。我已经试过了,效果很好

你所说的“同时”,是指没有任何延误,还是两者同时延误?另外,请提供一个准确完整的示例(这不是一个完整的示例,因为它缺少一个
导入
),并验证该示例是否再现了该问题。time.sleep()是否需要秒或毫秒?可能您没有导入时间,所以不是等待20秒,而是出现了一个名称错误。@Patashu那么它为什么会打印“世界”呢?为什么在调用
时间时它不会出错。使用
名称错误睡眠(20)
?我不认为这是问题所在。随sys、os和time module.time.sleep(20)导入的python代码需要20秒。首先,我希望控制台中出现“Hello”,20秒后出现“world”。我的代码中有这么多打印命令。因此,我必须给出“sys.stdout.flush()在每个打印命令之后。是否有其他方法?如果未导入,则在尝试运行
time.sleep()
时会抛出错误。