python标准库之sched 定时事件调度器

# -*- coding: utf-8 -*-
# 作者:新手
__author__ = ‘Administrator‘
#py标准库之sched
import time
import sched#定时事件调度器
#使用time来掌握当前时间,还有一个是延迟(delay)来指定一个时间段
#调用time是不带任何参数的,返回当前一个时间数,delay要提供一个整数的参数,
#有延迟运行事件
"""
4个方法
1:表示延迟的数;
2:优先级值;
3:要调用的函数;
4:函数参数的元组
"""
#例1:
sche=sched.scheduler(time.time,time.sleep)
def print_event(name,start):
    now=time.time()
    end=int(now-start)
    print ‘event :%s end=%s name=%s‘%(time.ctime(now),end,name)
start=time.time()
print ‘statr:‘,time.ctime(start)
sche.enter(2,1,print_event,(‘first‘,start))#是2秒
sche.enter(3,1,print_event,(‘second‘,start))#3秒
sche.run()
#重叠事件
#run()调用会阻塞,甚至所有事件都已经处理,每个事件都在相同的纯种中运行,所以如果一个事件需要很长时间运行,走出事件之间的延迟,就会出现重叠
#这个重叠可以通过推迟后面的事件来解决,这样一举动丢失事件,不过有些事件可能比其调度时间更晚,
#例2
def longevent(name):
    print ‘1event:‘,time.ctime(time.time()),name
    time.sleep(2)
    print ‘2event‘,time.ctime(time.time()),name
print ‘start‘,time.ctime(time.time())
sche.enter(2,1,longevent,(‘first‘,))
sche.enter(3,1,longevent,(‘second‘,))
sche.run()
#当第一个事件一旦完成就会立即运行第二个事件,因为第一个事件花费的时间比第2个事件长,所以会超过第二个事件的开始时间

#事件优先级
#如果调度多个事件在同一个时间运行,就要使用事优先级来确定它们以何种顺序运行
def yxevent(name):
    print ‘event‘,time.ctime(time.time()),name
now=time.time()
print ‘start:‘,time.ctime(now)
sche.enter(2,1,yxevent,(‘first‘,))
sche.enter(3,1,yxevent,(‘second‘,))
sche.run()

#取消事件
#enter()和enterabs()都会返回一事件一个引用,以后可以用这个引用来取消事件,由于run()阻塞,必须在一个不同线程中取消这个事件
import threading
count=0
def count1(name):
    global  count
    print ‘event‘,time.ctime(time.time()),name
    count+=1
    print ‘now:‘,count
print ‘start:‘,time.ctime(now)
a1=sche.enter(2,1,count1,(‘a1‘,))
a2=sche.enter(3,1,count1,(‘a2‘,))
t=threading.Thread(target=sche.run)
t.start()
sche.cancel(a1)
t.join()
print ‘final:‘,count

#这边调用了2个事件,不过第一个随后被取消,只运行了第二个事件,所以count变量只递增一次

#sched官方标准库:https://docs.python.org/2.7/library/sched.html?highlight=sched#module-sched

时间: 2024-07-30 15:16:12

python标准库之sched 定时事件调度器的相关文章

Python 标准库一览(Python进阶学习)

转自:http://blog.csdn.net/jurbo/article/details/52334345 写这个的起因是,还是因为在做Python challenge的时候,有的时候想解决问题,连应该用哪个类库都不知道,还要去百度(我不信就我一个人那么尴尬TvT) 好像自从学习了基础的Python 语法,看了几本Python经典的书,知道了一些常见的类库.在几本语法应用熟练的情况下,如果不做题,像是无法显著的提高自己的知识储备了(所以叫你去做python challenge啊,什么都不会~~

【python标准库学习】thread,threading(二)多线程同步

继上一篇介绍了python的多线程和基本用法.也说到了python中多线程中的同步锁,这篇就来看看python中的多线程同步问题. 有时候很多个线程同时对一个资源进行修改,这个时候就容易发生错误,看看这个最简单的程序: import thread, time count = 0 def addCount(): global count for i in range(100000): count += 1 for i in range(10): thread.start_new_thread(ad

Python标准库(机器汉化)

Python标准库 虽然"Python语言参考"描述了Python语言的确切语法和语义,但该库参考手册描述了使用Python分发的标准库.它还介绍了Python发行版中通常包含的一些可选组件. Python的标准库非常广泛,提供了下面列出的长表所示的各种设施.该库包含内置模块(用C语言编写),提供对Python程序员无法访问的系统功能(如文件I / O)的访问,以及使用Python编写的模块,为出现的许多问题提供标准化的解决方案日常编程.其中一些模块是明确设计的,通过将特定平台抽象为平

【python标准库学习】thread,threading(一)多线程的介绍和使用

在单个程序中我们经常用多线程来处理不同的工作,尤其是有的工作需要等,那么我们会新建一个线程去等然后执行某些操作,当做完事后线程退出被回收.当一个程序运行时,就会有一个进程被系统所创建,同时也会有一个线程运行,这个线程就是主线程main,在主线程中所创建的新的线程都是子线程,子线程通常都是做一些辅助的事.python中提供了thread和threading两个模块来支持多线程. python中使用线程有两种方式,第一种是用thread模块的start_new_thread函数,另一种是用threa

[python标准库]XML模块

1.什么是XML XML是可扩展标记语言(Extensible Markup Language)的缩写,其中的 标记(markup)是关键部分.您可以创建内容,然后使用限定标记标记它,从而使每个单词.短语或块成为可识别.可分类的信息. XML有以下几个特点. XML的设计宗旨是传输数据,而非显示数据. XML标签没有被预定义.您需要自行定义标签. XML被设计为具有自我描述性. XML是W3C的推荐标准. 其解析流程如下图: 2.常用解析XML的Python包 Python的标准库中,提供了6种

Python标准库07 信号 (signal包,部分os包)

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 在了解了Linux的信号基础之后,Python标准库中的signal包就很容易学习和理解.signal包负责在Python程序内部处理信号,典型的操作包括预设信号处理函数,暂停并等待信号,以及定时发出SIGALRM等.要注意,signal包主要是针对UNIX平台(比如Linux, MAC OS),而Windows内核中由于对信号机制的支持不充分,所以在Windows上的Pytho

Python标准库概览

Python标准库通常被称为"自带的电池",自然地提供了广泛的功能,涵盖了大概200个左右的包与模块.不断有高质量的包或模块被开发出来,极大的丰富了标准库.但有些模块放在标准库中很难去维护,比如"Berkeley DB"模块,其被清理出标准库进行单独维护.还有一些库,比如PyParsing(创建分析器)也是没有被加在标准库中. 1 字符串处理 1.1 String模块 常量:string.ascii_letters. string.hexdigits. string

Python标准库与第三方库详解(转载)

转载地址: http://www.codeweblog.com/python%e6%a0%87%e5%87%86%e5%ba%93%e4%b8%8e%e7%ac%ac%e4%b8%89%e6%96%b9%e5%ba%93%e8%af%a6%e8%a7%a3/ 这篇文章主要介绍了Python标准库与第三方库,需要的朋友可以参考下 本文详细罗列并说明了Python的标准库与第三方库如下,供对此有需要的朋友进行参考: Tkinter———— Python默认的图形界面接口.Tkinter是一个和Tk接

python标准库Beautiful Soup与MongoDb爬喜马拉雅电台的总结

Beautiful Soup标准库是一个可以从HTML/XML文件中提取数据的Python库,它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式,Beautiful Soup将会节省数小时的工作时间.pymongo标准库是MongoDb NoSql数据库与python语言之间的桥梁,通过pymongo将数据保存到MongoDb中.结合使用这两者来爬去喜马拉雅电台的数据... Beautiful Soup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,其中一个是