2
import time

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

threedot()

When the above code is run, the interpreter waits 1.5 seconds and then prints '. . .'; rather than wait 0.5 seconds in-between printing '.'. Why is this? (on python 2.7.3)

4

2 に答える 2

3

出力は、コードが final まで実際にトリガーしないいくつかのイベントの 1 つまでキャッシュされていますprintsys.stdout.flush()毎回出力をフラッシュします (ヒント: )。

于 2013-06-15T07:45:30.923 に答える
0

通常、stdout は「ライン バッファリング」されます。つまり、改行が検出されるか、ストリームが閉じられるまで、libc は出力をバッファリングします (コンソールには出力しません)。

stderr に書き込むか、出力ストリームを毎回手動でフラッシュします。

于 2013-06-15T07:50:36.947 に答える