在Python中同时运行两个函数
我试着做一个机器人,它可以和你说话,可以做一些特殊的事情,比如定时器。我希望计时器可以运行,而用户可以输入更多的问题或东西来与机器人交谈。 但现在,当通过执行threading.Timer(time\u wait,Timer\u end).start()将“Timer\u end”作为新线程激活时,会播放winsound.Beep(800250)声音,但“Speak”(“ALERT!”)不会激活在Python中同时运行两个函数,python,multithreading,Python,Multithreading,我试着做一个机器人,它可以和你说话,可以做一些特殊的事情,比如定时器。我希望计时器可以运行,而用户可以输入更多的问题或东西来与机器人交谈。 但现在,当通过执行threading.Timer(time\u wait,Timer\u end).start()将“Timer\u end”作为新线程激活时,会播放winsound.Beep(800250)声音,但“Speak”(“ALERT!”)不会激活 import os import time import threading import wins
import os
import time
import threading
import winsound
ki_speak="yes"
user_speak="yes"
time_wait=0
text=""
user=""
def Timer_start():
Speak("Timer settings:")
Speak("Seconds:")
seconds=int(input())
Speak("Minutes:")
minutes=int(input())
Speak("Hours:")
hours=int(input())
global time_wait
time_wait=0
while seconds!=0:
time_wait+=1
seconds-=1
while minutes!=0:
time_wait+=60
minutes-=1
while hours!=0:
time_wait+=3600
hours-=1
threading.Timer(time_wait, Timer_end).start()
def Timer_end():
winsound.Beep(800,250)
winsound.Beep(600,250)
Speak("ALERT!")
def Speak(text):
print(text)
if user_speak=="Yes" or user_speak=="yes":
global user
SpeakFile = open("User_Speak.vbs","w")
SpeakFile.write('textvbs = ("')
SpeakFile.write(str(user))
SpeakFile.write('")\nset objvoice = createobject ("SAPI.spvoice")\nobjvoice.speak textvbs')
SpeakFile.close()
os.system("User_Speak.vbs")
user=""
if ki_speak=="Yes" or ki_speak=="yes":
SpeakFile = open("Ki_Speak.vbs","w")
SpeakFile.write('textvbs = ("')
SpeakFile.write(str(text))
SpeakFile.write('")\nset objvoice = createobject ("SAPI.spvoice")\nobjvoice.speak textvbs')
SpeakFile.close()
os.system("Ki_Speak.vbs")
text=""
def main():
if user=="b":
CRASH
elif user=="hello":
Speak("Hey")
elif user=="t":
Timer_start()
while True:
user=str(input())
main()
在循环中使用
msvcrt.getch()
在循环中逐个获取输入字符并在运行时测试计时器可能会更容易。那么就不需要线程了。然后这个x2