Python中的实时输出
在我的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
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()
时会抛出错误。