需要同时运行 2 个函数,但它们只能一个接一个地运行



我有 2 个函数

def Print_Out(string):
typing_speed = Engine.getProperty('rate') #wpm
for c in string:
print(c, end='')
time.sleep(random.random()*10.0/typing_speed)
print('')

这将以 200 wpm 的速度缓慢打印文本 和另一个函数"Say",它将向用户读取该文本(使用 pyttsx3(。

我尝试使用多线程

threading.thread(target = Print_Out(Response)).start()
threading.thread(target = Say(Response)).start()

(我也尝试在末尾没有".start((",它仍然运行函数( 我尝试了多处理,但我不确定我做对了,我无法为此提供代码,因为我只是拿了一些我找到的东西并尝试在这里使用它

我需要它们并行运行,因为文本打印出来,声音在说出来,但最终发生的事情是它慢慢地打印出文本,然后阅读它(或者换句话说,取决于它们在代码中的放置方式(。 没有错误

当你尝试制作线程版本时,你实际上传递了调用预期目标(以Response作为参数(而不是函数的结果。

因此,函数首先被调用,等待返回,然后响应(无论是什么(作为target参数传递给Thread

试试这个:

t1 = threading.Thread(target=Print_Out, args=(Response,))
t2 = threading.Thread(target=Say, args=(Response,))
t1.start()
t2.start()
# And wait for the threads to finish
t1.join()
t2.join()

(即传递函数本身(

相关内容

  • 没有找到相关文章

最新更新