日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

python做定时任务的方式及优缺点_python BlockingScheduler定时任务及其他方式的实现...

發(fā)布時間:2023/11/27 生活经验 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python做定时任务的方式及优缺点_python BlockingScheduler定时任务及其他方式的实现... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

本文介紹了python BlockingScheduler定時任務及其他方式的實現(xiàn),具體如下:

#BlockingScheduler定時任務

from apscheduler.schedulers.blocking import BlockingScheduler

from datetime import datetime

首先看看周一到周五定時執(zhí)行任務

# 輸出時間

def job():

print(datetime.now().strtime("%Y-%m-%d %H:%M:%S"))

# BlockingScheduler

scheduler = BlockingScheduler()

scheduler.add_job(job, "cron", day_of_week="1-5", hour=6, minute=30)

schduler.start()

scheduler.add_job(job, 'cron', hour=1, minute=5)

hour =19 , minute =23 這里表示每天的19:23 分執(zhí)行任務

hour ='19', minute ='23' 這里可以填寫數(shù)字,也可以填寫字符串

hour ='19-21', minute= '23' 表示 19:23、 20:23、 21:23 各執(zhí)行一次任務

#每300秒執(zhí)行一次

scheduler .add_job(job, 'interval', seconds=300)

#在1月,3月,5月,7-9月,每天的下午2點,每一分鐘執(zhí)行一次任務

scheduler .add_job(func=job, trigger='cron', month='1,3,5,7-9', day='*', hour='14', minute='*')

# 當前任務會在 6、7、8、11、12 月的第三個周五的 0、1、2、3 點執(zhí)行

scheduler .add_job(job, 'cron', month='6-8,11-12', day='3rd fri', hour='0-3')

#從開始時間到結(jié)束時間,每隔倆小時運行一次

scheduler .add_job(job, 'interval', hours=2, start_date='2018-01-10 09:30:00', end_date='2018-06-15 11:00:00')

#自制定時器

from datetime import datetime

import time

# 每n秒執(zhí)行一次

def timer(n):

while True:

print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

time.sleep(n)

timer(5)

Python下實現(xiàn)定時任務的方式有很多種方式。

循環(huán)sleep:

這是一種最簡單的方式,在循環(huán)里放入要執(zhí)行的任務,然后sleep一段時間再執(zhí)行。缺點是,不容易控制,而且sleep是個阻塞函數(shù)。

def timer(n):

'''

每n秒執(zhí)行一次

'''

while True:

print time.strftime('%Y-%m-%d %X',time.localtime())

yourTask() # 此處為要執(zhí)行的任務

time.sleep(n)

threading的Timer:

threading模塊中的Timer能夠幫助實現(xiàn)定時任務,而且是非阻塞的。

比如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()

使用sched模塊:

sched是一種調(diào)度(延時處理機制)。

# -*- coding:utf-8 -*-

# use sched to timing

import time

import os

import sched

# 初始化sched模塊的scheduler類

# 第一個參數(shù)是一個可以返回時間戳的函數(shù),第二個參數(shù)可以在定時未到達之前阻塞。

schedule = sched.scheduler(time.time, time.sleep)

# 被周期性調(diào)度觸發(fā)的函數(shù)

def execute_command(cmd, inc):

'''

終端上顯示當前計算機的連接情況

'''

os.system(cmd)

schedule.enter(inc, 0, execute_command, (cmd, inc))

def main(cmd, inc=60):

# enter四個參數(shù)分別為:間隔事件、優(yōu)先級(用于同時間到達的兩個事件同時執(zhí)行時定序)、被調(diào)用觸發(fā)的函數(shù),

# 給該觸發(fā)函數(shù)的參數(shù)(tuple形式)

schedule.enter(0, 0, execute_command, (cmd, inc))

schedule.run()

# 每60秒查看下網(wǎng)絡(luò)連接情況

if __name__ == '__main__':

main("netstat -an", 60)

使用定時框架APScheduler:

APScheduler是基于Quartz的一個Python定時任務框架。提供了基于日期、固定時間間隔以及crontab類型的任務,并且可以持久化任務。

這個現(xiàn)在還沒自己嘗試過,等過段時間用了再來補充。

使用windows的定時任務:

這里可以將所需要的Python程序打包成exe文件,然后在windows下設(shè)置定時執(zhí)行。

使用Linux的定時任務(Crontab):

在Linux下可以很方便的借助Crontab來設(shè)置和運行定時任務。進入Crontab文件編輯頁面,設(shè)置時間間隔,使用一些shell命令來運行bash腳本或者是Python腳本,保存后Linux會自動按照設(shè)定的時間來定時運行程序。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持我們。

本文標題: python BlockingScheduler定時任務及其他方式的實現(xiàn)

本文地址: http://www.cppcns.com/jiaoben/python/275110.html

總結(jié)

以上是生活随笔為你收集整理的python做定时任务的方式及优缺点_python BlockingScheduler定时任务及其他方式的实现...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。