2
import time

def threedot():
    time.sleep(0.5)
    print '.',
    time.sleep(0.5)
    print '.',
    time.sleep(0.5)
    print '.'

threedot()

运行上述代码时,解释器等待 1.5 秒,然后打印 '. . '; 而不是在打印 '.' 之间等待 0.5 秒。为什么是这样?(在 python 2.7.3 上)

4

2 回答 2

3

输出将被缓存,直到您的代码在 final 之前实际不会触发的几个事件之一printsys.stdout.flush()每次刷新输出(提示:) 。

于 2013-06-15T07:45:30.923 回答
0

stdout 通常是“行缓冲的”,这意味着 libc 将缓冲输出(而不是将其写入控制台),直到遇到换行符或流被关闭。

要么写入stderr,要么每次手动刷新输出流。

于 2013-06-15T07:50:36.947 回答