python sched_python事件调度库sched
事件调度
sched模块内容很简单,只定义了一个类。它用来最为一个通用的事件调度模块。
class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接口,它需要外部传入两个参数,timefunc是一个没有参数的返回时间类型数字的函数(常用使用的如time模块里面的time),delayfunc应该是一个需要一个参数来调用、与timefunc的输出兼容、并且作用为延迟多个时间单位的函数(常用的如time模块的sleep)。
下面是一个列子:
importsched, time#生成调度器
s =sched.scheduler(time.time, time.sleep)def print_time(a='default'):print("From print_time", time.time(), a)defprint_some_times():print(time.time())#加入调度事件
s.enter(10, 1, print_time) #default
#四个参数分别是:
#间隔时间(具体值决定与delayfunc, 这里为秒);
#优先级(两个事件在同一时间到达的情况);
#触发的函数;
#函数参数
s.enter(5, 2, print_time, argument=('positional',))#positional
s.enter(5, 1, print_time, kwargs={'a': 'keyword'})#keyword
#运行调度
s.run()print(time.time())
print_some_times()
#运行结果:先打印keyword,因为时间5秒,级别1高,然后是5秒级别2的positional,最后才是10秒的default
1556808770.1539588From print_time1556808775.1548176keyword
From print_time1556808775.1548176positional
From print_time1556808780.15493default1556808780.15493
在多线程场景中,会有线程安全问题,run()函数会阻塞主线程。官方建议使用threading.Timer类代替
importtimefrom threading importTimerdefprint_time(t):print("From print_time", time.time(),t)defprint_some_times():print(time.time())
Timer(5, print_time,args=("5s",)).start()
Timer(10, print_time,args=("10s",)).start()
time.sleep(11) #阻塞主线程,等待调度程序执行完毕,再执行后面内容
print(time.time())
print_some_times()
#执行结果
1556810008.0475848From print_time1556810013.04818655s
From print_time1556810018.049205810s1556810019.048601
Scheduler对象方法
scheduler对象拥有下面这些方法或属性:
scheduler.enterabs(time, priority, action, argument)
加入一个事件,time参数应该是一个与传递给构造函数的timefunc函数的返回值相兼容的数值类型。在同一时间到达的事件将按照priority顺序执行。
执行事件其实就是执行action(argument)。argument必须是一个包含action参数的序列。
返回值是一个事件,它可以用于稍后取消事件(请参见cancel())。
scheduler.enter(delay, priority, action, argument)
安排一个事件来延迟delay个时间单位。除了时间外,其他参数、含义和返回值与enterabs()的值相同。其实内部enterabs就是用来被enter调用。
scheduler.cancel(event)
从队列中删除事件。如果事件不是当前队列中的事件,则该方法将跑出一个ValueError。
scheduler.empty()
判断队列是否为空。
scheduler.run()
运行所有预定的事件。这个函数将等待(使用传递给构造函数的delayfunc()函数),然后执行事件,直到不再有预定的事件。
任何action或delayfunc都可以引发异常。在这两种情况下,调度器将保持一个一致的状态并传播异常。如果一个异常是由action引起的,就不会再继续执行run()。
scheduler.queue
只读属性,返回一个即将到达的事件列表(按到达事件排序),每个事件都是有time、priority、action、argument组成的namedtuple
python sched_python事件调度库sched相关推荐
- python事件调度库sched
事件调度 sched模块内容很简单,只定义了一个类.它用来最为一个通用的事件调度模块. class sched.scheduler(timefunc, delayfunc)这个类定义了调度事件的通用接 ...
- python离散事件仿真库SimPy官方教程
参考:SimPy Discrete event simulation for Python 建议先简单了解仿真原理:离散事件仿真原理DES 简单介绍 simpy的实现关键在于生成器的使用,通过例子说明 ...
- python sched_Python定时模块之sched
一.sched模块 ----- 事件调度程序 sched模块定义了一个实现通用事件调度器的类:scheduler class sched.scheduler(timefunc=time.monoton ...
- python sched_python中的crontab ————sched标准库 | 学步园
可以做计划任务,就是在指定的延时之后执行一段程序. sched.scheduler(timefunc, delayfunc) 接受两个参数,timefunc必须在没有参数的情况下也能调用,返回延时数字 ...
- Python事件调度器定时任务sched
文章目录 简介 初试 解析 参考文献 简介 sched是Python的内置模块,用于事件调度,可在安全的在多线程环境中轻松实现定时任务. 但该方法会阻塞线程,直到所有被调度的任务都执行完成. 初试 i ...
- python sched_Python标准库之sched模块介绍
sched--通用时间调度器 sched模块实现了一个通用事件调度器,在调度器类使用一个延迟函数等待特定的时间,执行任务.同时支持多线程应用程序,在每个任务执行后会立刻调用延时函数,以确保其他线程也能 ...
- Python 200个标准库汇总
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 文本 string:通用字符串操作 re:正则表达式操作 diff ...
- python常用标准库有哪些-Python 200个标准库汇总
文本 string:通用字符串操作 re:正则表达式操作 difflib:差异计算工具 textwrap:文本填充 unicodedata:Unicode字符数据库 stringprep:互联网字符串 ...
- Python中级 —— 07标准库
标准库学习 1. The Python Standard Library[https://docs.python.org/3.5/library/] ( 3.5.5 Documentation ) 1 ...
最新文章
- 操作系统学习:Linux0.12初始化详细流程-首个子进程
- 干货|全面理解无监督学习基础知识
- Amy Mcdonald - This is the Life
- Hadoop pipes编程
- CF1251F-Red-White Fence【NTT】
- LUGOU P3907 圈的异或
- 新基建东风下,程序员这样乘风破浪!
- 有关8086必须记住的几个数(持续更新)
- 转:SQL进阶之变量、事务、存储过程与触发器
- Mac系统Option键的妙用,能够极大提升你的效率
- centos php mysql 配置_CentOS系统中安装配置Apache+PHP+MySQL环境
- C#:Access数据库的连接、读取,字段的增加、删除、更新、查询操作
- usb驱动错误导致的键盘鼠标失灵
- 产品经理校招20道常见面试题:问题拆解与回答思路
- 植物大战僵尸修改植物攻击力
- 【d3】树图-各种效果集合(附效果图)
- 漫谈数据结构系列(一)之僧敲月下门
- Java 批量导出PPT为图片,并合并生成PDF
- 什么是CDN资质?什么情况需要办CDN牌照
- app上传到安卓各大市场