我正在制作像Google智能助理或Siri这样的私人助理,我希望用户能够设置提醒。例如,如果他们输入“提醒我在下午5点洗碗”,我希望它稍后会弹出并提醒他们。但是我也希望代码能够在等待时运行,因此您可以设置多个提醒或检查天气。
time.sleep只是停止程序。我很确定有一种方法可以用线程来做,但我不确定如何。请帮忙!
答案 0 :(得分:0)
Python线程的Timer
完全符合您的要求:
from datetime import datetime
from threading import Timer
def create_notification(time, name):
delay = (time - datetime.now()).total_seconds()
Timer(delay, show_notification, args=[name]).start()
def show_notification(name):
print(f'notification: {name}!')
create_notification(datetime(2034, 1, 1), 'Hello future!')
需要注意的一点是,这种方法为每个事件创建了一个单独的线程(对于许多事件而言,这种线程无法很好地扩展)。这也会遇到这样的问题:如果用户关闭程序,程序崩溃,计算机关机,断电等,您将丢失所有通知。如果需要处理此问题,请将它们保存到文件中。如果您需要在程序未运行时显示通知,请查看操作系统提供的解决方案,如cronjobs。