python - 如何向正在运行的线程添加事件?

标签 python multithreading scheduled-tasks

我正在尝试使用计划和线程设置警报。如果我运行一次 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/

相关文章:

c - linux中的并行处理

java - 在多线程应用程序中,是否应该使用 ReadWriteLock 锁定基本类型的 getter/setter?

windows - 尝试使用任务计划程序注册任务时出错 (Win7)

java - 在某些类中关闭其他库的 logback 日志记录

windows - 使用 Windows 任务计划程序每 x 分钟运行一次任务

python - numpy Loadtxt 函数似乎消耗了太多内存

python - 如何将引文开头的每个单词大写?

python - 使用 VGG 进行数据生成和损失计算时,元素不属于图形

c++ - LD_PRELOAD 和线程局部变量

python - django configParser错误