事件调度

sched 模块内容很简单,只定义了一个类。它用来最为一个通用的事件调度模块。
class sched.scheduler(timefunc, delayfunc) 这个类定义了调度事件的通用接口,它需要外部传入两个参数, timefunc 是一个没有参数的返回时间类型数字的函数(常用使用的如time模块里面的time), delayfunc 应该是一个需要一个参数来调用、与timefunc的输出兼容、并且作用为延迟多个时间单位的函数(常用的如time模块的sleep)。
下面是一个列子:
import sched, time s = sched.scheduler(time.time, time.sleep) # 生成调度器 def print_time(): print "From print_time", time.time() def print_some_times(): print time.time() s.enter(5, 1, print_time, ()) # 加入调度事件 # 四个参数分别是: # 间隔事件(具体值决定与delayfunc, 这里为秒); # 优先级(两个事件在同一时间到达的情况); # 触发的函数; # 函数参数; s.enter(10, 1, print_time, ()) # 运行 s.run() print time.time() if __name__ == '__main__': print_some_times()
看到的输出结果,隔5秒中执行第一个事件,隔10秒后执行第二个事件:
1499259731.99 From print_time 1499259736.99 From print_time 1499259741.99 1499259741.99
在多线程场景中,会有线程安全问题,run()函数会阻塞主线程。官方建议使用 threading.Timer 类代替:
import time from threading import Timer def print_time(): print "From print_time", time.time() def print_some_times(): print time.time() Timer(5, print_time, ()).start() Timer(10, print_time, ()).start() time.sleep(11) # 阻塞主线程,等待调度程序执行完毕,再执行后面内容 print time.time() if __name__ == '__main__': print_some_times()
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模块
# sched
# python中实现延时回调普通函数示例代码
# Python中使用摄像头实现简单的延时摄影技术
# Python检测网络延迟的代码
# Python方法的延迟加载的示例代码
# Python性能提升之延迟初始化
# Python类属性的延迟计算
# Python3.6 Schedule模块定时任务(实例讲解)
# Python定时任务sched模块用法示例
# Python延时操作实现方法示例
# 是一个
# 返回值
# 列子
# 会有
# 是有
# 第一个
# 多个
# 在这
# 就不
# 是由
# 两种
# 在同一
# 第二个
# 很简单
# 它可以
# 跑出
# 会再
# 多线程
# 稍后
# 为空
相关文章:
,如何利用word制作宣传手册?
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?
如何通过老薛主机一键快速建站?
如何在云指建站中生成FTP站点?
C#怎么创建控制台应用 C# Console App项目创建方法
如何获取上海专业网站定制建站电话?
重庆市网站制作公司,重庆招聘网站哪个好?
广东企业建站网站优化与SEO营销核心策略指南
如何快速搭建高效可靠的建站解决方案?
如何通过FTP服务器快速搭建网站?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
测试制作网站有哪些,测试性取向的权威测试或者网站?
浅谈Javascript中的Label语句
建站之星官网登录失败?如何快速解决?
如何配置FTP站点权限与安全设置?
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
网页设计网站制作软件,microsoft office哪个可以创建网页?
建站之星CMS五站合一模板配置与SEO优化指南
兔展官网 在线制作,怎样制作微信请帖?
建站主机选购指南:核心配置与性价比推荐解析
,网站推广常用方法?
简历在线制作网站免费,免费下载个人简历的网站是哪些?
手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?
重庆网站制作公司哪家好,重庆中考招生办官方网站?
网站制作公司排行榜,四大门户网站排名?
如何在阿里云完成域名注册与建站?
如何用西部建站助手快速创建专业网站?
阿里云网站制作公司,阿里云快速搭建网站好用吗?
如何快速生成凡客建站的专业级图册?
常州企业建站如何选择最佳模板?
如何选择网络建站服务器?高效建站必看指南
番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?
如何用AWS免费套餐快速搭建高效网站?
网站制作多少钱一个,建一个论坛网站大约需要多少钱?
建站ABC备案流程中有哪些关键注意事项?
制作证书网站有哪些,全国城建培训中心证书查询官网?
c# 在高并发下使用反射发射(Reflection.Emit)的性能
合肥做个网站多少钱,合肥本地有没有比较靠谱的交友平台?
建站168自助建站系统:快速模板定制与SEO优化指南
做企业网站制作流程,企业网站制作基本流程有哪些?
成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?
宿州网站制作公司兴策,安徽省低保查询网站?
创业网站制作流程,创业网站可靠吗?
网站制作大概多少钱一个,做一个平台网站大概多少钱?
高端云建站费用究竟需要多少预算?
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
如何获取开源自助建站系统免费下载链接?
深圳网站制作平台,深圳市做网站好的公司有哪些?
建站OpenVZ教程与优化策略:配置指南与性能提升
*请认真填写需求信息,我们会在24小时内与您取得联系。