2

私が走るとき、例えば:

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

4 に答える 4

5

各印刷後にstdoutをフラッシュしてみてください。

import sys

print("=",end=" ")
sys.stdout.flush()
于 2010-05-11T22:45:45.450 に答える
3

実際には、プログレス バーは に属してsys.stderrおり、(非常に便利で偶然ではありません) バッファリングされていません。だから私はあなたをお勧めします:

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

代わりは。

PS POSIX 準拠のオペレーティング システムにおける標準入力、出力、およびエラー ストリームの概要は、ウィキペディア:標準ストリームにあります。簡単に言うと、stdin はプロセスへの入力です。stdout は、プロセスの有用な出力である結果です。stderr は、警告、エラー、帯域外 (進行状況バーなど) の出力用です。

于 2010-05-12T01:47:22.783 に答える
0

sys.stdout.flush()

于 2010-05-11T22:45:34.420 に答える
0

更新を書き込むたびにstdoutを使用してフラッシュする必要があります。sys.stdout.flush()

于 2010-05-11T22:45:43.510 に答える