打印速度慢,打印前等待太久



下面的代码应该(我相信(打印一个字符,等待0.4秒然后打印下一个字符,但它等待1.6秒,然后打印孔字符串。

这是我尝试过的一些代码

import time
def print_slow(str):
    for letter in str:
        print(letter, end='')
        time.sleep(.4)
print_slow("junk")

我的期望:j ... u ... n ... k我得到的:......... junk

你没有定义打印标准输出的齐平。通过在 print 命令中不包含 flush=True,它只会将所有字符存储在缓冲区中,直到函数调用解析,并且所有字符都在单个实例中打印。

import time
def print_slow(str):
    for letter in str:
        print(letter, end='', flush=True)
        time.sleep(.4)
print_slow("junk")

这个问题可能是这个问题的重复。

基本上,打印是缓冲stdout。您需要在每次迭代时刷新输出:

print(letter, end='', flush=True)
import time, sys
def print_slow(str):
    for letter in str:
        print(letter, end='')
        sys.stdout.flush()
        time.sleep(.4)
print_slow("junk")

只需要强制终端显示输出

您需要

在每次写入时刷新stdout。否则,当程序结束时,您的打印将被缓冲并立即写入:

import sys
import time
def print_slow(str):
    for letter in str:
        print(letter, end='')
        sys.stdout.flush()
        time.sleep(.4)
print_slow("junk")

编辑:

您可以通过调用带有-u标志的 python 来运行脚本:python3 -u <scriptname.py>

-u :强制标准输出和标准输出的二进制 I/O 层无缓冲; 标准输入始终是缓冲的;文本 I/O 层将被行缓冲; 也是 PYTHONUNBUFFERED=x

最新更新