Python执行定时任务

Python执行定时任务

python使用内置库和第三方库执行定时任务。

使用 sched 模块

sched相当于一个延时处理任务
schedule是简单明了的一个第三方定时任务库,需要先pip安装一下
一个很好的例子

import schedule
import time

# 定义你要周期运行的函数
def job():
    print("I'm working...")

schedule.every(10).minutes.do(job)               # 每隔 10 分钟运行一次 job 函数
schedule.every().hour.do(job)                    # 每隔 1 小时运行一次 job 函数
schedule.every().day.at("10:30").do(job)         # 每天在 10:30 时间点运行 job 函数
schedule.every().monday.do(job)                  # 每周一 运行一次 job 函数
schedule.every().wednesday.at("13:15").do(job)   # 每周三 13:15 时间点运行 job 函数
schedule.every().minute.at(":17").do(job)        # 每分钟的 17 秒时间点运行 job 函数

while True:
    schedule.run_pending()   # 运行所有可以运行的任务
    time.sleep(1)

传递参数

import schedule
import time

# 定义你要周期运行的函数
def job(msg):
    print("I'm working...")
    print('接受参数为:{}'.format(msg))

schedule.every(10).seconds.do(job,msg='10s')

while True:
    schedule.run_pending()   # 运行所有可以运行的任务
    time.sleep(1)

执行并发任务

import schedule,time
def job1(msg):
    time.sleep(1)
    print('任务1接受参数为:{}'.format(msg))
def job2(msg):
    time.sleep(2)
    print('任务2接受参数为:{}'.format(msg))
def job3(msg):
    time.sleep(3)
    print('任务3接受参数为:{}'.format(msg))
schedule.every(1).seconds.do(job1,msg='任务1')
schedule.every(3).seconds.do(job2,msg='任务2')
schedule.every(1).seconds.do(job3,msg='任务3')
while 1:
    schedule.run_pending()

实际上应该是顺序执行
在这里插入图片描述

加入使用threading完成并发
在这里插入图片描述

# -*- coding:utf-8 -*-
import schedule,time
import threading

def job1(msg):
    time.sleep(1)
    print('任务1接受参数为:{}'.format(msg))
def job2(msg):
    time.sleep(2)
    print('任务2接受参数为:{}'.format(msg))
def job3(msg):
    time.sleep(3)
    print('任务3接受参数为:{}'.format(msg))
def ensure_schedule_1():
    threading.Thread(target=job1,args=(1,)).start()
def ensure_schedule_2():
    threading.Thread(target=job2,args=(2,)).start()
def ensure_schedule_3():
    threading.Thread(target=job3,args=(3,)).start()
def run():
    schedule.every(1).seconds.do(ensure_schedule_1)
    schedule.every(1).seconds.do(ensure_schedule_2)
    schedule.every(1).seconds.do(ensure_schedule_3)
    while 1:
        schedule.run_pending()
run()
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值