遇到time.sleep问题

时间:2010-05-11 22:40:22

标签: python python-3.x buffering

当我跑步时,例如:

print("[",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("=",end=" ")
time.sleep(1)
print("]",end=" ")

10秒内没有任何事情发生,然后出现整个[= = = = = = = = = =]。我怎样才能阻止它,以便它可以作为一种进度条呢?

4 个答案:

答案 0 :(得分:5)

每次打印后尝试刷新标准输出:

import sys

print("=",end=" ")
sys.stdout.flush()

答案 1 :(得分:3)

实际上,进度条属于sys.stderr,它是(非常方便,根本不是巧合)未缓冲的。所以我建议你:

print("=", end=" ", file=sys.stderr)

代替。

PS维基百科中可以找到符合POSIX标准的操作系统中标准输入,输出和错误流的概要:Standard streams。 简而言之:stdin是进程的输入; stdout是一个过程的有用输出,结果; stderr用于警告,错误和带外(例如进度条)输出。

答案 2 :(得分:0)

答案 3 :(得分:0)

每次要编写更新时,都需要使用stdout刷新sys.stdout.flush()

相关问题