print(..., end=' ') 立即输出
print(..., end=' ') with immediate output
我需要一段 Python 代码来加载(强调?)CPU 一小会儿。我还想在压力 CPU 期间获得一些输出,例如计数器打印。看起来很简单:
N=32
def fib(n):
if n < 2:
return 1
else:
return fib(n-1) + fib(n-2)
def main(num):
for i in range(1, num+1):
fib(N)
print(i, end=' ')
if __name__ == '__main__':
main(10)
但是,当我使用 print(i, end=' ')
时,它不会在执行时输出计数器,它只会在完成后输出 1 2 3 4 5 6 7 8 9 10
。
如果我使用常规打印 (print(i)
),它会打印计数器。
首先,我想知道为什么会出现这种奇怪的效果,其次,如何使 print
和 end
在这方面表现得像没有 [=] 的 print
15=]关键字。
print
操作默认是缓冲的,但是你可以强制它刷新缓冲区并立即打印。有关详细信息,请参阅 Python documentation。
print("foobar", flush=True)
我需要一段 Python 代码来加载(强调?)CPU 一小会儿。我还想在压力 CPU 期间获得一些输出,例如计数器打印。看起来很简单:
N=32
def fib(n):
if n < 2:
return 1
else:
return fib(n-1) + fib(n-2)
def main(num):
for i in range(1, num+1):
fib(N)
print(i, end=' ')
if __name__ == '__main__':
main(10)
但是,当我使用 print(i, end=' ')
时,它不会在执行时输出计数器,它只会在完成后输出 1 2 3 4 5 6 7 8 9 10
。
如果我使用常规打印 (print(i)
),它会打印计数器。
首先,我想知道为什么会出现这种奇怪的效果,其次,如何使 print
和 end
在这方面表现得像没有 [=] 的 print
15=]关键字。
print
操作默认是缓冲的,但是你可以强制它刷新缓冲区并立即打印。有关详细信息,请参阅 Python documentation。
print("foobar", flush=True)