python scheduler 定时执行,python中schedule的用法和搭配
如果需要执行更复杂的任务调度,可以使用Python提供的sched模块。该模块提供了sched.scheduler类,它表示一个任务计划程序。
sched . scheduler(time func=time . monotonic,delayffunc=time.sleep)构造函数支持两个参数:
Timefunc:该参数指定用于生成时间戳的时间函数。默认情况下,time.monotonic用于生成时间戳。
Delayfunc:该参数指定阻止程序的功能,默认情况下使用time.sleep功能来阻止程序。
Sched.scheduler调度程序支持以下常见属性和方法:
Scheduler.enterabs (time,priority,action,argument=(),kwargs={}):指定在该时间点执行action函数。argument和kwargs都用于向action函数传递参数,其中argument以位置参数的形式传递参数,kwargs以关键字参数的形式传递参数。该方法返回一个事件,该事件可用作cancel()方法的参数来取消计划。priority参数指定此任务的优先级。当需要在同一时间点执行多个任务时,将首先执行优先级较高的任务(值越小,优先级越高)。
Scheduler.enter (delay,priority,action,argument=(),kwargs={}):这个方法和前面的方法基本相同,只是delay参数用来指定执行action任务的秒数。
Scheduler.cancel(event):取消任务。如果传入的事件参数不是当前调度队列中的事件,程序将引发ValueError异常。
Scheduler.empty():判断该调度器的调度队列当前是否为空。
Scheduler.run(blocking=True):运行所有需要调度的任务。如果调用此方法的阻塞参数为True,此方法将阻塞线程,直到所有计划任务完成。
Scheduler.queue:这个只读属性返回这个调度程序的调度队列。
下面的程序演示了如何使用sched.scheduler来执行任务调度:
导入计划,时间
导入线程
#定义线程调度程序
s=sched.scheduler()
#定义预定功能
def print _ time(name= default ):
打印(时间为 % s :%s%(name,time.ctime()))
Print (main thread:,time.ctime())
#指定10秒后执行print_time功能
s.enter(10,1,print_time)
#指定print_time函数将在5秒后执行,优先级为2。
南enter (5,2,print _ time,argument=(position parameter ,))
#指定print_time函数在5秒后执行,优先级为1。
南enter (5,1,print _ time,kwargs={ name : keyword parameter })
#执行计划任务
运行()
在print (main thread:,time.ctime())上面的程序中,第12行代码指定了10s后执行print_time()函数,并且在这个调度中没有为这个函数传入任何参数;第14行代码指定print_time()函数调度在5s之后,本次调度使用的location参数是该函数的传入参数;第16行代码指定print_time()函数被调度在5s之后,这个调度使用关键字参数的形式为这个函数传入参数。
上面的程序运行后,你会看到程序在5s后执行了两次print_time()函数,其中先执行带有input关键字参数的函数(其优先级更高),10s后执行一次print_time()函数。运行上述程序,您将看到以下输出结果:
主线:星期二16:30:512019
参数时间:星期二16:562019
参数3360的时间星期二16:562019
默认时间为:星期二516:313360012019。
主线:星期二16:31:012019
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。