2016-10-20 10 views
0

私はちょうどいじりれたと私は次のコードを持っている:いくつかの理由なぜprint関数は終了引数を指定してsleepで動作しなくなるのですか?

from time import sleep 
while True: 
    print('a', end='  ') 
    sleep(0.05) 

を、何も私はのCtl + Cを押すまでを印刷されません。その後、継続的に印刷していたはずのすべてを印刷します。ただし、end引数を削除した場合:

from time import sleep 
while True: 
    print('a') 
    sleep(0.05) 

これは完全に機能します。 "a"は0.05秒ごとに印刷されます。

また、sleepを省略すると、最初のコードに問題はありません。

So:end引数がsleepの出力を隠すのはなぜですか?

答えて

1

Python(および他の)プログラムが画面に印刷すると、まず印刷バッファに送られます。 Pythonが適切に見つけたら、このバッファを画面上にフラッシュします。この動作の内部的な詳細はわかりませんが、printの機能のflushキーワードをTrueに設定すると、強制的にフラッシュが強制的に実行されます。試してください:

from time import sleep 
while True: 
    print('a', end='  ', flush=True) 
    sleep(0.05) 
関連する問題