sched
— 事件调度器
¶
源代码:
Lib/sched.py
The
sched
模块定义实现一般目的的事件调度器类:
-
class
sched.
scheduler
(
timefunc
=
time.monotonic
,
delayfunc
=
time.sleep
)
¶
-
The
scheduler
类定义调度事件的一般接口。它需要 2 个函数以实际处理外部世界 —
timefunc
应该是不带自变量的可调用,并返回数字 (时间,无论按任何单位)。
delayfunc
函数应该是带有一自变量的可调用,兼容其输出为
timefunc
,且应该延迟多个时间单位。
delayfunc
还将被调用采用自变量
0
在每个事件运行后,允许其它线程有机会在多线程应用程序中运行。
3.3 版改变:
timefunc
and
delayfunc
参数是可选的。
3.3 版改变:
scheduler
类可以安全地用于多线程环境。
范例:
>>> 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',))
... # despite having higher priority, 'keyword' runs after 'positional' as enter() is relative
... s.enter(5, 1, print_time, kwargs={'a': 'keyword'})
... s.enterabs(1_650_000_000, 10, print_time, argument=("first enterabs",))
... s.enterabs(1_650_000_000, 5, print_time, argument=("second enterabs",))
... s.run()
... print(time.time())
...
>>> print_some_times()
1652342830.3640375
From print_time 1652342830.3642538 second enterabs
From print_time 1652342830.3643398 first enterabs
From print_time 1652342835.3694863 positional
From print_time 1652342835.3696074 keyword
From print_time 1652342840.369612 default
1652342840.3697174