python下實現定時任務的方式有很多種方式。下面介紹幾種
迴圈sleep:
這是一種最簡單的方式,在迴圈裡放入要執行的任務,然後sleep一段時間再執行。缺點是,不容易控制,而且sleep是個阻程式設計客棧塞函式。
def timer(n):
'''''
每n秒執行一次
'''
while true:
print time.strftime('%y-%m-%d %x',time.lwww.cppcns.comocaltime())
yourtask() # 此處為要執行的任務
time.sleep(n)
threading的timer:
threading模組中的timer能夠幫助實現定時任務,而且是非阻塞的。
比如3秒後列印helloworld:
def printhello():
print "hello world"
timer(3, printhello).start()
比如每3秒列印一次helloworld:
def printhello():
print "hello world"
t = timer(2, printhello)
t.star
if __name__ == "__main__":
printhello()
使用sched模組:
sched是一種排程(延時處理機制)。
# -*- coding:utf-8 -*-
# use sched to timing
import time
import os
import sched
# 初始化sched模組的scheduler類
# 第乙個引數是乙個可以返回時間戳的函式,第二個引數可以在定時未到達之前阻塞。
schedule = sched.scheduler(time.time, time.sleep)
# 被週期性排程觸發的函式
def execute_command(cmd, inc):
'''''
終端上顯示當前計算機的連線情況
'''
os.system(cmd)
schedule.enter(inc, 0, execute_command, (cmd, inc))
def mai程式設計客棧n(cmd, inc=60):
# enter四個引數分別為:間隔事件、優先順序(用於同時間到達的兩個事件同時執行時定序)、被呼叫觸發的函式,
# 給該觸發函式的引數(tuple形式)
schedule.enter(0, 0, execute_command, (cmd, inc))
schedule.run()
# 每60秒檢視下網路連線情況
if __name__ == '__main__':
main("netsta -an", 60)
使用定時框架apscheduler:
apscheduler是基於quartz的乙個python定時任務框架。提供了基於日期、固定時間間隔以及crontab型別的任務,並且可以持久化任務。
這個現在還沒自己嘗試過,等過段時間用了再來補充。
使用windows的定時任務:
這裡可以將所需要的python程式打包成exe檔案,然後在windows下設定定時執行。
本文標題: python實現定時任務
本文位址:
Python實現定時任務
工作中可能需要週期性執行一些任務,俗稱定時任務。linux環境下,可以借助於系統自帶的crontab完成定時任務。但是很多時候,開發人員可能並沒有許可權去操作crontab。而schedule是python的輕量級定時任務解決方案,可以滿足常定時採集資料,定時執行指令碼程式等週期性任務需求。pip ...
Python定時任務實現
定時執行任務,定時 pip install schedule import schedule import time 不帶引數定時執行 def job print i m working.schedule.every 10 seconds.do job 每10秒執行一次 schedule.every...
python定時任務
說明 使用python內建的模組來實現,本篇部落格只是以迴圈定時來示範,其他的可以結合crontab的風格自己設定 一 導包 from apscheduler.schedulers.blocking import blockingscheduler二 普通函式的使用 1 interval模式,功能比...