page contents

解密python实现定时任务的8种方式

本文讲述了介绍9个必须知道的python字典骚操作,从此键盘飞起!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

attachments-2023-12-jTeec8ue6583d58f42a37.jpg本文讲述了介绍9个必须知道的python字典骚操作,从此键盘飞起!具有很好的参考价值,希望对大家有所帮助。一起跟随六星小编过来看看吧,具体如下:

定时任务是编程中常见的需求,它可以按照预定的时间表执行特定的任务或操作。在Python中,有多种方法可以实现定时任务。

常见的Python定时任务解决方案,包括使用标准库、第三方库和操作系统工具。

方案一:

使用time.sleep() 

time.sleep()是Python标准库中的函数,它可以帮助你暂停程序的执行一段指定的时间。 

通过组合time.sleep()和循环,可以实现简单的定时任务。

import time

def task():

    print("定时任务执行中...")

while True:

    task()

    time.sleep(60)  # 休眠1min

结果:

定时任务执行中...

定时任务执行中...

定时任务执行中...

方案二:使用sched模块

Python的sched模块提供了一个事件调度器,可以在指定的时间执行函数。这是一个更灵活的解决方案,可以安排多个任务。

import time

import sched

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

def task(sc):

    print("定时任务执行中...")

s.enter(3600, 1, task, (s,))

s.run()

结果:

attachments-2023-12-7i5Ukvgk6583d546eaa0e.jpg

sched 对象主要方法:

enter(delay, priority, action, argument),安排一个事件来延迟 delay 个时间单位。

cancel(event):从队列中删除事件。如果事件不是当前队列中的事件,则该方法将跑出一个 ValueError。

run():运行所有预定的事件。这个函数将等待(使用传递给构造函数的 delayfunc() 函数),然后执行事件,直到不再有预定的事件。

方案三:使用APScheduler库

 APScheduler是一个功能强大的Python库,可用于调度各种类型的任务,包括定时任务。它支持多种调度方式,如间隔调度、定时调度等。

from apscheduler.schedulers.blocking import BlockingScheduler

def task():

    print("定时任务执行中...")

scheduler = BlockingScheduler()

scheduler.add_job(task, 'interval', hours=1)

scheduler.start()

方案四:使用Celery

Celery是一个强大的分布式任务队列框架,可以用于管理和调度定时任务。它支持任务的异步执行和分布式部署。

from celery import Celery

app = Celery('myapp', broker='pyamqp://guest@localhost//')

@app.task

def my_task():

    print("定时任务执行中...")

my_task.apply_async(countdown=3600)

方案五:使用操作系统工具

在Linux和Unix系统上,可以使用cron任务调度器来执行定时任务。通过编写一个包含Python命令的脚本,并将其添加到cron作业中,可以在指定的时间执行Python脚本。

创建一个Python脚本(例如my_task.py):

# my_task.py

def my_task():

    print("定时任务执行中...")

if __name__ == "__main__":

    my_task()

然后,将脚本添加到cron作业

在cron配置文件中添加:

0 * * * * /usr/bin/python /path/to/my_task.py

方案六:使用第三方库schedule

schedule是一个Python库,它提供了一种非常简单的方式来执行定时任务。它的语法直观易懂,适用于各种定时任务需求。

import schedule

import time

def mtask():

    print("定时任务执行中...")

schedule.every(1).hour.do(mtask)

while True:

    schedule.run_pending()

    time.sleep(1)

方案七:利用 threading.Timer 实现定时任务

threading 模块中的 Timer 是一个非阻塞函数,比 sleep 稍好一点,timer 最基本理解就是定时器,我们可以启动多个定时任务,这些定时器任务是异步执行,所以不存在等待顺序执行问题。

Tmer(interval, function, args=[ ], kwargs={ })

    interval: 指定的时间

    function: 要执行的方法

    args/kwargs: 方法的参数

import datetime

from threading import  Timer

def do():

    now = datetime.datetime.now()

    print(now)

    loop()

def loop():

    t = Timer(5, do)

    t.start()

if __name__ == "__main__":

     loop()

方案八、使用 Timeloop 库运行定时任务

是一个库,可用于运行多周期任务。这是一个简单的库,它使用 decorator 模式在线程中运行标记函数

import time

from timeloop import Timeloop

from datetime import timedelta

tl=Timeloop()

@tl.job(interval=timedelta(seconds=2))

def sample_job_every_2s():

    print("2s job current time : {}".format(time.ctime()))

if __name__=="__main__":

    tl.start(block=True)

八个定时任务的实现方式就实现完成了!

更多相关技术内容咨询欢迎前往并持续关注六星社区了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2023-12-21 14:08
  • 阅读 ( 243 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
小柒
小柒

1316 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1316 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章