pythonschedule多线程_Python定时任务sched模块⽤法⽰例本⽂实例讲述了Python定时任务sched模块⽤法。分享给⼤家供⼤家参考,具体如下:
通过sched模块可以实现通过⾃定义时间,⾃定义函数,⾃定义优先级来执⾏函数。
范例⼀
import time
import sched
schedule = sched.scheduler( time.time,time.sleep)
def func(string1):
print "now excuted func is %s"%string1
print "start"
<(2,0,func,(1,))
<(2,0,func,(2,))
<(3,0,func,(3,))
schedule用法及搭配(4,0,func,(4,))
schedule.run()
print "end"
schedule是⼀个对象,叫什么名字都可以
<(delay,priority,action,arguments)
第⼀个参数是⼀个整数或浮点数,代表多少秒后执⾏这个action任务
第⼆个参数priority是优先级,0代表优先级最⾼,1次之,2次次之,当两个任务是预定在同⼀个时刻执⾏时,根据优先级决定谁先执⾏。
第三个参数就是你要执⾏的任务,可以简单理解成你要执⾏任务的函数的函数名
第四个参数是你要传⼊这个定时执⾏函数名函数的参数,最好⽤括号包起来,如果只传⼊⼀个参数的时候⽤括号包起来,该参数后⾯⼀定要加⼀个逗号,如果不打逗号,会出现错误。
例如:
<(delay, priority, action, (argument1,))
run()⼀直被阻塞,直到所有任务全部执⾏结束。每个任务在同⼀线程中运⾏,所以如果⼀个任务执⾏时间⼤于其他任务的等待时间,那么其他任务会推迟任务的执⾏时间,这样保证没有任务丢失,但这些任务的调⽤时间会⽐设定的推迟。
多线程执⾏定时任务
范例⼆
import time
import sched
from threading import Timer
def print_name(str):
print "i'm %s"%str
print "start"
Timer(5,print_name,("superman",)).start()
Timer(10,print_name,("spiderman",)).start()
print "end"
通过多线程,实现定时任务
在多线程中,如果只通过schedule,会因为线程安全的问题会出现阻塞,⼀个任务执⾏,如果没有结束⽽另⼀个任务就要等待。通过threading.Timer可以避免这个问题效果就是直接执⾏Print start和print end,⽽定时任务会分开执⾏。打印end不会阻塞。希望本⽂所述对⼤家Python程序设计有所帮助。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论