事件调度

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延时操作实现方法示例
# 是一个
# 返回值
# 列子
# 会有
# 是有
# 第一个
# 多个
# 在这
# 就不
# 是由
# 两种
# 在同一
# 第二个
# 很简单
# 它可以
# 跑出
# 会再
# 多线程
# 稍后
# 为空
相关文章:
已有域名建站全流程解析:网站搭建步骤与建站工具选择
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
如何通过FTP空间快速搭建安全高效网站?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
如何用免费手机建站系统零基础打造专业网站?
定制建站平台哪家好?企业官网搭建与快速建站方案推荐
香港服务器租用费用高吗?如何避免常见误区?
Thinkphp 中 distinct 的用法解析
建站之星伪静态规则如何设置?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何快速生成高效建站系统源代码?
已有域名如何免费搭建网站?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何在Windows环境下新建FTP站点并设置权限?
大型企业网站制作流程,做网站需要注册公司吗?
C++如何编写函数模板?(泛型编程入门)
儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?
简历在线制作网站免费版,如何创建个人简历?
网站网页制作专业公司,怎样制作自己的网页?
购物网站制作公司有哪些,哪个购物网站比较好?
如何快速查询网站的真实建站时间?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
定制建站模板如何实现SEO优化与智能系统配置?18字教程
如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?
建站主机助手选型指南:2025年热门推荐与高效部署技巧
网站制作壁纸教程视频,电脑壁纸网站?
如何用PHP快速搭建CMS系统?
大连网站制作公司哪家好一点,大连买房网站哪个好?
官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
家具网站制作软件,家具厂怎么跑业务?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
教学论文网站制作软件有哪些,写论文用什么软件
?
如何快速搭建高效可靠的建站解决方案?
红河网站制作公司,红河事业单位身份证如何上传?
如何选择最佳自助建站系统?快速指南解析优劣
如何确保西部建站助手FTP传输的安全性?
如何在景安云服务器上绑定域名并配置虚拟主机?
建站为何优先选择香港服务器?
如何在建站宝盒中设置产品搜索功能?
,制作一个手机app网站要多少钱?
如何在香港免费服务器上快速搭建网站?
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
如何快速生成橙子建站落地页链接?
如何快速搭建高效WAP手机网站吸引移动用户?
如何生成腾讯云建站专用兑换码?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
*请认真填写需求信息,我们会在24小时内与您取得联系。