0

我有 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()”,它仍然运行函数)我尝试了多处理,但我不确定我做对了,我不能为此提供代码,因为我只是拿了一些我发现并尝试过的东西在这里使用它

我需要它们并行运行,当文本打印出来时,声音在说,但最终发生的是它慢慢打印出文本,然后读取它(或其他方式,取决于它们如何放置在代码)。没有错误

4

1 回答 1

3

当您尝试制作线程版本时,您实际上传递了调用预期目标(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()

(即自己传递函数)

于 2019-09-22T07:58:33.670 回答