如何让Python不等待命令结束?

How to make Python not to wait for the end of the command?

我正在制作语音助手,当我说“设置闹钟”时程序冻结并等待闹钟设置的时间。所以在闹钟响之前我不能和助手通话。
这是代码

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")

如何忽略它或对程序做一些事情使其不会冻结?也许还有其他设置闹钟的方法?
帮助将不胜感激!

您可以创建一个 thread,它将 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 阻止执行,但应该相当快。