我正在制作语音助手,当我说“设置闹钟”时,程序冻结并等待闹钟设置的时间。所以在闹钟响起之前我不能和助理说话。这是代码if 'alarm' in said: engine.say('Set') engine.runAndWait() now = datetime.datetime.now() alarm_time = datetime.datetime.combine(now.date(), datetime.time(int(said))) time.sleep((alarm_time - now).total_seconds()) os.system("start alarm.mp3")如何忽略它或对程序做一些事情以使其不会冻结?也许还有其他设置闹钟的方法?帮助将不胜感激!
1 回答
30秒到达战场
TA贡献1828条经验 获得超6个赞
您可以创建一个将在指定时间内运行的线程。sleep
睡眠线程不会阻塞主线程,所以它会继续执行。
import threading, time, os
def thread_func(seconds):
time.sleep(seconds)
os.system("start alarm.mp3")
threading.Thread(
target=thread_func,
args=((alarm_time - now).total_seconds(), ),
daemon=True
).start()
# Do something else here
os.system 将阻止执行,但应该相当快。
添加回答
举报
0/150
提交
取消