python定时任务启动与停止_Python启动定时任务
1. time模塊
time.sleep(n)
例如下面的例子
def work(n): - 每隔n 秒 輸出 1到10之間的一個數(shù)
for i in range(10):
print i
time.sleep(n)
上面的實例是阻塞的,在sleep的時間內(nèi)程序一直堵塞
詳情請參考官方文檔-----time.sleep
2. sched 模塊
1.導(dǎo)入sched模塊
import sched
----------------------------------------------------------------------------------
2.創(chuàng)建scheduler對象
s = sched.scheduler(time.time, time.sleep)
- time.time:返回時間戳的函數(shù)
- time.sleep:可以在定時未到達之前阻塞
------------------------------------------------------------------------------------
3.定義要執(zhí)行的任務(wù)
def worker(n):
pass
-------------------------------------------------------------------------------------
4.將任務(wù)添加到scheduler的盒子中
s.enter(delay,priority,action,arguments)
- delay:int /float型的表示多少秒后執(zhí)行這個action任務(wù)
- priority:優(yōu)先級表示當(dāng)多個任務(wù)同時在一個時刻將執(zhí)行優(yōu)先執(zhí)行那個任務(wù)
0優(yōu)先級最高,數(shù)字越小優(yōu)先級越高
- action: 執(zhí)行的任務(wù)在上面的例子中也就是函數(shù)名worker
- arguments:參數(shù)列表以元組的形式如:(n,)
如果沒有參數(shù)傳入直接傳空括號()
--------------------------------------------------------------------------------------
5.運行任務(wù)
s.run()
在多線程環(huán)境中由于線程全局鎖安全,一個任務(wù)沒結(jié)束,就要等待也是阻塞的詳細請查看官方庫----sched
3.threading.Timer()
為了解決上面的阻塞問題,再多線程的環(huán)境中能夠并發(fā)執(zhí)行
1.導(dǎo)入模塊
from threading import Timer
----------------------------------------------------------------------------------------
2.定義要執(zhí)行的任務(wù)
def work(arg):
pass
----------------------------------------------------------------------------------------
3.啟動執(zhí)行
Timer(delay, work, (arg)).start()
- 不需要區(qū)分優(yōu)先級可以同時執(zhí)行任務(wù)delay相同時就同時執(zhí)行任務(wù)
- delay:int /float型的表示多少秒后執(zhí)行這個work任務(wù)
- work: 執(zhí)行任務(wù)的方法名字
- arg:參數(shù)列表元祖(arg,)如果沒有就是()
4.更加高級的任務(wù)調(diào)度框架 apscheduler
官方文檔 查看
1.導(dǎo)入模塊
from apscheduler.schedulers.blocking import BlockingScheduler
2.初始化一個任務(wù)實例
sched = BlockingScheduler()
3.添加作業(yè)任務(wù)
sched.add_job(my_job, 'interval', seconds=5)
- my_job:作業(yè)任務(wù)
-‘ interval ’ ‘cron ’等等
4.啟動任務(wù)
sched.start()
總結(jié)
以上是生活随笔為你收集整理的python定时任务启动与停止_Python启动定时任务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 看printk引发的一点思考
- 下一篇: python 定时任务 全局变量_Pyt