sched事件调度程序

源代码: Lib / sched.py


sched模块定义了一个实现通用事件调度程序的类:

class sched.schedulertimefunc=time.monotonic, delayfunc=time.sleep

schedulerclass定义了一个调度事件的通用接口。它需要两个函数来实际处理“外部世界” – timefunc应该可以不带参数调用,并返回一个数字(“时间”,任何单位)。如果time.monotonic不可用,则timefunc默认为time.time。delayfunc函数应该可以使用one//gument调用,与timefunc的输出兼容,并且应该延迟多次单位。delayfunc也会被调用0运行eachevent后允许其他线程有机会在多线程应用程序中运行.

改版3.3:timefuncdelayfunc参数是可选的.

在版本3.3中更改:scheduler类可以安全地用于multi-threadedenvironments中.

示例:

>>> import sched, time>>> s = sched.scheduler(time.time, time.sleep)>>> def print_time(a="default"):...     print("From print_time", time.time(), a)...>>> def print_some_times():...     print(time.time())...     s.enter(10, 1, print_time)...     s.enter(5, 2, print_time, argument=("positional",))...     s.enter(5, 1, print_time, kwargs={"a": "keyword"})...     s.run()...     print(time.time())...>>> print_some_times()930343690.257From print_time 930343695.274 positionalFrom print_time 930343695.275 keywordFrom print_time 930343700.273 default930343700.276

Scheduler对象

scheduler实例具有以下方法和属性:

scheduler.enterabstime, priority, action, argument=(), kwargs={}

安排新活动。time参数应该是一个数字类型,与传递给构造函数的timefunc函数的返回值兼容。为同一个time将按priority的顺序执行。较小的数字表示较高的优先级.

执行事件意味着执行action(*argument, **kwargs).argument是一个包含action.kwargs是一个包含action.

关键字参数的字典。返回值是一个事件,可以用于以后取消事件(参见cancel()).

更改版本3.3:argument参数是可选的.

新版本3.3:kwargs参数已添加.

scheduler.enter (delay, priority, action, argument=(), kwargs={})

计划事件delay更多时间单位。除了相对时间外,其他参数,效果和返回值与enterabs().

相同。版本3.3中更改:argument参数是可选的.

版本3.3中新增:kwargs参数已添加.

scheduler.cancel (event)

从队列中移除事件。如果event不是当前的事件,这个方法会引发ValueError.

scheduler.empty

如果事件队列为空,则返回true。

scheduler.runblocking=True)

运行所有预定的事件。这个方法会等待(使用delayfunc()传递给构造函数的函数)用于下一个事件,然后执行它,直到没有更多的预定事件.

如果blocking是假执行预定的事件,因为最快到期(如果有的话)然后返回调度程序中的下一个预定呼叫的截止日期(如果有的话).

要么actiondelayfunc可以提出例外。在任何一种情况下,计划程序都将保持一致状态并传播异常。如果action,将来的召唤活动将不会尝试run().

如果一系列事件的运行时间比下一个事件之前的可用时间长,那么调度程序将完全落后。不会丢弃任何事件;调用代码负责取消不再存在的事件.

版本3.3中新增了blocking参数已添加.

scheduler.queue

Read-only属性按照他们将要运行的顺序返回即将发生的事件列表。每个事件都显示为名为tuple ,其中包括以下字段:时间,优先级,动作,参数,kwargs。