schedule模块定时执行任务

 一、基本使用

import schedule
import time
 
def job():
    print("I'm working...")
 
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).days.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
 
while True:
    schedule.run_pending()
    time.sleep(1)

上面的意思就是:

每隔十分钟执行一次任务

每隔一小时执行一次任务

每天的10:30执行一次任务

每隔5到10天执行一次任务 

每周一的这个时候执行一次任务

每周三13:15执行一次任务

run_pending:运行所有可以运行的任务

当然,如果函数中带有参数怎么办呢?

很简单,如下所示:

import schedule
import time
 
def job(name):
    print("her name is : ", name)
 
name = xiaona
schedule.every(10).minutes.do(job, name)
schedule.every().hour.do(job, name)
schedule.every().day.at("10:30").do(job, name)
schedule.every(5).to(10).days.do(job, name)
schedule.every().monday.do(job, name)
schedule.every().wednesday.at("13:15").do(job, name)
 
while True:
    schedule.run_pending()
    time.sleep(1)
 

二、多线程解决多任务串行执行任务的延迟问题 

未使用多线程

import datetime

import schedule

import time



def job1():

    print("I'm working for job1")

    time.sleep(2)

    print("job1:", datetime.datetime.now())



def job2():

    print("I'm working for job2")

    time.sleep(2)

    print("job2:", datetime.datetime.now())



def run():

    schedule.every(10).seconds.do(job1)

    schedule.every(10).seconds.do(job2)



while True:

    schedule.run_pending()

    time.sleep(1)

使用多线程 


import datetime

import schedule

import threading

import time



def job1():

    print("I'm working for job1")

    time.sleep(2)

    print("job1:", datetime.datetime.now())



def job2():

    print("I'm working for job2")

    time.sleep(2)

    print("job2:", datetime.datetime.now())



def job1_task():

    threading.Thread(target=job1).start()



def job2_task():

    threading.Thread(target=job2).start()



def run():

    schedule.every(10).seconds.do(job1_task)

    schedule.every(10).seconds.do(job2_task)



while True:

    schedule.run_pending()

    time.sleep(1)

猜你喜欢

转载自blog.csdn.net/Ren_ger/article/details/88721831