pyttsx3.speak()与带end=''的print语句存在输出延迟问题求助
问题原因与解决方案
问题本质
Python的print函数默认采用行缓冲机制,当指定end=''时,输出内容不会触发换行操作,导致内容暂存于输出缓冲区中,并未立即显示在终端。而pyttsx3.speak()是阻塞式函数,会占据主线程直到语音播报完成,此时缓冲区才会被自动刷新,因此所有打印内容会在播报结束后才一并出现。
解决方法
有两种简单可行的解决方式:
方法1:给print添加flush=True参数
直接在设置end=''的print语句中开启强制刷新:
import pyttsx3 print("第一句内容", end='', flush=True) pyttsx3.speak("Hi") print("第二句内容")
方法2:手动刷新输出缓冲区
通过sys.stdout.flush()主动触发缓冲区刷新:
import pyttsx3 import sys print("第一句内容", end='') sys.stdout.flush() pyttsx3.speak("Hi") print("第二句内容")
补充说明
当不指定end=''时,print默认会在输出末尾添加换行符\n,而换行符会自动触发缓冲区刷新,因此内容会立即打印,不会出现延迟问题。
内容的提问来源于stack exchange,提问作者eternal_white
相关产品推荐
相关产品推荐

