time.sleep 在将 end= 添加到 print() 时无法按预期工作



我正在尝试打印一条消息,每个字符之间暂停 0.2 秒。我在 print(( 方法中添加了一个 end=",以便消息显示在 1 行上,但是当我启动线程时,在暂停之前只打印 1 个字符,直到剩余的睡眠时间结束并打印消息的其余部分。

该程序在没有 end=" 的情况下运行良好,但我不确定为什么。

import time,threading
msg = "68 111 110 117 116 115 32 97 114 101 32 98 111 109 98 "
msg = [int(x) for x in msg.split()]
def print_msg():
for c in msg:
print(chr(c),end=""),time.sleep(0.2)
threading.Thread(target=print_msg).start()

很高兴看到OP可以提供可执行的示例!问题很简单,stdout 有缓存,需要刷新结果:

import time, threading
msg = "68 111 110 117 116 115 32 97 114 101 32 98 111 109 98 "
msg = [int(x) for x in msg.split()]
def print_msg():
for c in msg:
print(chr(c), end="", flush=True)
time.sleep(0.2)
threading.Thread(target=print_msg).start()

最新更新