全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Python标准库sched模块使用指南

事件调度

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小时内与您取得联系。