首页 > 解决方案 > 如何取消函数中的事件

问题描述

我需要取消用户输入名称的特定事件。但是 s.cancel从不允许我这样做,因为我猜这个变量是本地的。我能做些什么?

这是我的代码:

import sched
import time

s = sched.scheduler(time.time, time.sleep)

def print_job_name(msg):
    print(msg)

def alarm(name):
    name = s.enter(5,1,print_job_name,("Hey",))
    print(type(name))
    return name

alarm('hey')
alarm('Good Morning')
alarm('hello')
s.cancel(hey)
s.run()

标签: python

解决方案


import sched
import time

s = sched.scheduler(time.time, time.sleep)
scheduled_events = {}
def print_job_name(msg):
    print(msg)


def alarm(name):
    name = s.enter(5,1,print_job_name,("Hey",))
    print(type(name))
    return name

scheduled_events['hey'] = alarm('hey')
scheduled_events['Good Morning'] = alarm('Good Morning')
scheduled_events['hello'] = alarm('hello')
s.cancel(scheduled_events['hey'])
s.run()

这不是存储事件的最佳方法,因为您的 args 对于 2 个不同的事件可能是相同的。但是,这应该可以帮助您入门。


推荐阅读