python scheduler 定时执行,python中schedule的用法和搭配

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: