import time
for i in range(100):
print('*',end='')
time.sleep(0.1)
なぜこのコードが進捗状況を表示していないのですか? 期待される出力は、進行状況 '***************'を表示することでした。プログレスバーが機能していませんか?
import time
for i in range(100):
print('*',end='')
time.sleep(0.1)
なぜこのコードが進捗状況を表示していないのですか? 期待される出力は、進行状況 '***************'を表示することでした。プログレスバーが機能していませんか?
標準出力がバッファされます。それぞれprint
の後にsys.stdout.flush()
への呼び出しでフラッシュすることができます。または、明示的なフラッシュを実行する代わりに、flush=True
を印刷コマンドに追加することができます。
print('*', end='', flush=True)
何がフラッシュで、なぜ使用され、どのようにsys.stdout.flushを教えてください。私は、内部的にこのコードの中でハッキングが起こっていることをあなたに言いたいのですか? – user8751232
@ user8751232、stdoutは 'print'出力がデフォルトで行われる場所です。パフォーマンスを向上させるために、stdoutは通常バッファされます。通常、stdoutはバッファされた行です。つまり、行全体が印刷可能になるまで、実際には何も印刷されません。 Flushは、バッファから蓄積されたすべてのものをプッシュすることを意味します。したがって、 'sys.stdout.flush()'はすべてをバッファから画面上にプッシュします。 'flush = True'も同じことをします。また、アプリケーション全体のバッファリングをなくすこともできますが、通常の状況下ではバッファリングをしたくない場合があります。 –
あなたは何をしていますか?わたしにはできる。 https://repl.it/repls/TreasuredPerfumedIndianpangolin – user2896976
@ user2896976しばらく待ってから '*'を100回印刷すると、プログレスバーのように印刷されません。 – user8751232
どのようにスクリプトを実行していますか? – user2896976