python中使用schedule模块定时执行任务

python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务.

  • 普通定时任务
import schedule
import time

def job(name):
    print("her name is : ", name)
def job2():
    print("I'm working2...")
name = "longsongpong"
schedule.every(10).minutes.do(job, name)#每隔十分钟执行一次任务
schedule.every().hour.do(job, name)#每隔一小时执行一次任务
schedule.every().day.at("10:30").do(job, name)#每天的10:30执行一次任务
schedule.every(5).to(10).days.do(job, name)#每隔5到10天执行一次任务 
schedule.every().monday.do(job, name)#每周一的这个时候执行一次任务
schedule.every().wednesday.at("13:15").do(job, name)#每周三13:15执行一次任务
schedule.every(1).minutes.do(job2)#不带参数
while True:
    schedule.run_pending()#运行所有可以运行的任务
    time.sleep(1)

schedule方法是串行的,也就是说,如果各个任务之间时间不冲突,那是没问题的;如果时间有冲突的话,会串行的执行命令

  • 多线程并发执行
import schedule
import time
import threading
def job():
    print("I'm working... in job1  start")
    time.sleep(15)
    print("I'm working... in job1  end")
def job2():
    print("I'm working... in job2")
def run_threaded(job_func):
     job_thread = threading.Thread(target=job_func)
     job_thread.start()
 schedule.every(10).seconds.do(run_threaded,job)
 schedule.every(10).seconds.do(run_threaded,job2)
while True:
    schedule.run_pending()
    time.sleep(1)

执行结果:

I'm working... in job1  start
I'm working... in job2
I'm working... in job1  start
I'm working... in job2
I'm working... in job1  end
I'm working... in job1  start
I'm working... in job2

参考链接:
1、https://www.jianshu.com/p/a2f51fcadbe7
2、https://www.cnblogs.com/longsongpong/p/10998619.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值