schedule模块定时执行任务

本文介绍了Python的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)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值