我正在尝试使用计划和线程设置警报。如果我运行一次 create_alarm() ,我就可以创建一个警报。但如果我再次运行相同的函数,它会说线程已经开始。
有没有办法多次运行函数 create_alarm() 并在线程中同时发出多个警报。
import sched, time, threading, datetime
s = sched.scheduler(time.time, time.sleep)
t = threading.Thread(target=s.run)
def trigger_alarm(name):
print("Alarm has triggered! Alarm name: ", name)
print("The time is now: {}".format(datetime.datetime.now()))
def create_alarm():
alarmName = input("What is your alarm name?")
alarmTime = input("When would you like your alarm to trigger (Format: YYYY-MM-DD HH:MM:SS)")
setAlarm = time.strptime(alarmTime, '%Y-%m-%d %H:%M:%S')
setAlarm = time.mktime(setAlarm)
globals()[alarmName] = s.enterabs(setAlarm,1,trigger_alarm,(alarmName,))
t.start()
print("Your alarm has been set.")
最佳答案
每次调用create_alarm
时,它都会运行t.start()
。一个线程只能启动一次,所以第二次调用就会失败。
您可以在创建线程后调用 t.start()
而不是在此函数内调用,或者您可以在调用 之前测试
.t
是否已在运行>t.start()
关于python - 如何向正在运行的线程添加事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58607223/