python的stdout是有缓冲区的,给你个例子你就知道了
import time
import sys
for i in range(5):
print i,
#sys.stdout.flush() time.sleep(1)
这个程序本意是每隔一秒输出一个数字,但是如果把这句话sys.stdout.flush()注释的话,你就只能等到程序执行完毕,屏幕上会一次性输出0,1,2,3,4。
如果你加上sys.stdout.flush(),刷新stdout,这样就能每隔一秒输出一个数字了。
可以用在网络程序中多线程程序,多个线程后台运行,同时要能在屏幕上实时看到输出信息。
本文通过一个实例深入解析Python中stdout的缓冲机制。在默认情况下,Python的stdout是带有缓冲的,这意味着输出可能不会立即显示。文章展示了一个简单的程序,通过在循环中打印数字并使用time.sleep()暂停,来说明当不使用sys.stdout.flush()时,输出是如何被延迟到缓冲区满或程序结束才一次性显示的。通过加入flush操作,可以实现实时输出,这对于网络或多线程程序中实时监控进程非常有用。

2711

被折叠的 条评论
为什么被折叠?



