在我的python代码中有以下内容:
我期望的输出是:
print "Hello"
time.sleep(20)
print "world"
我期望的输出是:
Hello
然后20秒之后
world
但是在控制台中,Hello
和world
同时打印。
print "Hello"
time.sleep(20)
print "world"
Hello
然后20秒之后
world
但是在控制台中,Hello
和world
同时打印。
print
操作符有效地使用缓冲的sys.stdout
流进行输出。
对于实时输出,您需要使用未缓冲的sys.stderr
流:
import sys, time
sys.stderr.write("Hello ")
time.sleep(20)
sys.stderr.write("world\n")
或者,您可以通过每次调用sys.stdout.flush()
手动刷新流缓冲区来获取输出,但我建议您不要这样做,除非您知道自己在做什么。
有关更多详细信息,请参阅标准流(stdin、stdout和stderr)的维基百科文章。
你的代码在我的电脑上可行。你可以尝试在打印hello
后直接刷新标准输出(stdout)。
import sys
sys.stdout.flush()
time
,尝试运行 time.sleep()
会抛出错误。 - Jessie
time.sleep(20)
时没有出现NameError
错误?我不认为这是问题所在。 - Ken Bellows