本篇文章主要介紹了Python實現定時任務,主要有5種方法,具有一定的參考價值,有興趣的小夥伴們可以參考一下。
Python下實現定時任務的方式有很多種方式。以下介紹幾個
循環sleep:
這是一種最簡單的方式,在循環裡放入要執行的任務,然後sleep一段時間再執行。缺點是,不容易控制,而且sleep是個阻塞函數。
def timer(n): ''''' 每n秒执行一次 ''' while True: print time.strftime('%Y-%m-%d %X',time.localtime()) 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.start() if __name__ == "__main__": printHello()
一種調度(延時處理機制)。
# -*- 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 main(cmd, inc=60):
# enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数,
# 给该触发函数的参数(tuple形式)
schedule.enter(0, 0, execute_command, (cmd, inc))
schedule.run()
# 每60秒查看下网络连接情况
if __name__ == '__main__':
main("netstat -an", 60)
APScheduler是基於Quartz的一個定時任務框架。提供了基於日期、固定時間間隔以及crontab類型的任務,並且可以持久化任務。
這個現在還沒自己嘗試過,等過段時間用了再來補充。
使用windows的定時任務:
這裡可以將所需的Python程式打包成exe文件,然後在windows下設定定時執行。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持PHP中文網。
更多Python實現定時任務相關文章請關注PHP中文網!