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)),它会打印计数器。

首先,我想知道为什么会出现这种奇怪的效果,其次,如何使 printend 在这方面表现得像没有 [=] 的 print 15=]关键字。

print操作默认是缓冲的,但是你可以强制它刷新缓冲区并立即打印。有关详细信息,请参阅 Python documentation

print("foobar", flush=True)