这里补充一个我遇到的坑:
在循环中使用time.sleep()使循环阻塞一段时间
import time
for i in range(10):
print(i,end='')
time.sleep(1)
预期结果是每间隔1秒输出一个数字
但实际结果是等待10秒后直接输出0-9一整串数字
在网上也没有找到具体原因,我估计是因为sleep()循环加入线程
导致循环完毕之后才输出最终结果
解决方法:
在循环末尾加上一段系统刷新的代码:sys.stdout.flush()
缓冲区的刷新方式:
1.flush()刷新缓存区
2.缓冲区满时,自动刷新
3.文件关闭或者是程序结束自动刷新。
当我们打印一些字符时,并不是调用print
函数后就立即打印的。一般会先将字符送到缓冲区,然后再打印。这就存在一个问题,如果你想等时间间隔的打印一些字符,但由于缓冲区没满,不会打印。就需要采取一些手段。如每次打印后强行刷新缓冲区。
for i in range(n):
print " * ",
sys.stdout.flush() #刷新缓冲区
time.sleep(1)