Python中执行定时任务详细教程与示例代码

news2024/11/18 1:22:54

更多资料获取

📚 个人网站:ipengtao.com


定时任务是自动化执行的一种方式,它可以在指定的时间间隔或特定时间点运行Python代码。无论是自动化数据备份、定期清理文件还是其他周期性任务,Python都提供了多种方式来执行定时任务。本文将介绍Python中执行定时任务的几种方法,并提供详细的示例代码。

方法一:使用time.sleep()进行简单定时

time.sleep(seconds)函数可用于在代码执行过程中暂停指定秒数,从而创建一个简单的定时效果。

下面是一个示例,演示如何每隔一段时间执行某个任务:

import time

while True:
    print("执行任务...")
    time.sleep(3600)  # 每隔1小时执行一次任务

在上面的示例中,使用time.sleep(3600)来让程序每隔1小时执行一次任务。可以根据需要调整睡眠的时间。

这种方法的缺点是在睡眠期间,程序无法执行其他任务,因此不适用于需要同时运行多个任务的情况。对于简单的周期性任务,它可能是一个不错的选择。

方法二:使用sched模块进行高级定时

Python的sched模块可以更精确地控制定时任务。可以创建一个调度器,安排在特定时间执行任务,甚至可以处理并发任务。

下面是一个使用sched模块的示例:

import sched
import time

def do_task():
    print("执行任务...")

s = sched.scheduler(time.time, time.sleep)
s.enter(3600, 1, do_task, ())  # 每隔1小时执行一次任务

s.run()

在这个示例中,首先定义了一个do_task函数,用于执行实际的任务。然后,创建了一个调度器s,使用s.enter(delay, priority, action, argument)来安排任务。delay是任务执行的延迟时间(秒),priority是任务的优先级,action是要执行的函数,argument是传递给函数的参数。最后,使用s.run()来运行调度器。

这种方法适用于需要更精确控制任务执行时间的情况,也可以轻松处理并发任务。

方法三:使用schedule库进行高级定时

schedule库是一个流行的Python库,用于更高级的定时任务调度。它可以创建复杂的调度计划,支持多种时间单位(秒、分钟、小时等)和各种重复频率。以下是一个使用schedule库的示例:

首先,需要使用以下命令来安装schedule库:

pip install schedule

然后,可以编写如下代码:

import schedule
import time

def do_task():
    print("执行任务...")

# 创建一个调度器
scheduler = schedule.Scheduler()

# 定义任务和执行频率(每隔1小时执行一次)
scheduler.every(1).hours.do(do_task)

while True:
    scheduler.run_pending()
    time.sleep(1)

在上面的示例中,首先安装了schedule库,然后创建了一个调度器scheduler。使用scheduler.every(1).hours.do(do_task)来定义任务和执行频率,这表示每隔1小时执行一次do_task函数。最后,使用scheduler.run_pending()来运行待定的任务。

schedule库非常强大,可以满足各种复杂的定时任务需求,是一个非常实用的工具。

方法四:使用APScheduler库进行高级定时

APScheduler(Advanced Python Scheduler)是一个功能强大的Python库,用于处理各种定时任务和调度需求。它支持多种调度器(间隔、定时、CRON表达式等),可以轻松管理和执行任务。以下是一个使用APScheduler库的示例:

首先,需要使用以下命令来安装APScheduler库:

pip install apscheduler

然后,可以编写如下代码:

from apscheduler.schedulers.blocking import BlockingScheduler

def do_task():
    print("执行任务...")

# 创建一个调度器
scheduler = BlockingScheduler()

# 定义任务和执行频率(每隔1小时执行一次)
scheduler.add_job(do_task, 'interval', hours=1)

try:
    scheduler.start()
except (KeyboardInterrupt, SystemExit):
    pass

在上面的示例中,首先安装了APScheduler库,然后创建了一个调度器scheduler。使用scheduler.add_job(do_task, 'interval', hours=1)来定义任务和执行频率,这表示每隔1小时执行一次do_task函数。最后,使用scheduler.start()来启动调度器。

APScheduler库提供了丰富的功能和灵活的配置选项,适用于各种复杂的定时任务场景。

总结

在Python中执行定时任务有多种方法可供选择,可以根据任务的复杂性和需求来选择合适的方法。简单的任务可以使用time.sleep(),而复杂的任务可以使用schedscheduleAPScheduler等库来处理。无论选择哪种方法,都可以轻松地自动化任务的执行,提高工作效率。希望本文的教程和示例代码能够帮助大家更好地理解和应用Python中的定时任务功能。


Python学习路线

在这里插入图片描述

更多资料获取

📚 个人网站:ipengtao.com

如果还想要领取更多更丰富的资料,可以点击文章下方名片,回复【优质资料】,即可获取 全方位学习资料包。

在这里插入图片描述
点击文章下方链接卡片,回复【优质资料】,可直接领取资料大礼包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1386374.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java实现天然气工程运维系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 系统角色分类2.2 核心功能2.2.1 流程 12.2.2 流程 22.3 各角色功能2.3.1 系统管理员功能2.3.2 用户服务部功能2.3.3 分公司(施工单位)功能2.3.3.1 技术员角色功能2.3.3.2 材料员角色功能 2.3.4 安…

2023 China DevOpsDays(DOD) DXCon 国际数字化转型与创新管理企业峰会:核心内容与学习收获(附大会核心PPT下载)

随着科技的飞速发展,数字化转型已成为企业持续发展的必经之路。2023年的China DevOpsDays & DXCon国际数字化转型与创新管理企业峰会,汇集了业界顶尖的专家、学者和企业领袖,共同探讨数字化转型的最新趋势和实践。本文将深入剖析大会的核…

MySQl导入与导出远程备份

文章目录 一. navicat导入导出 二. mysqldump命令导入导出导入导出 三. load data infile命令导入导出导入导出 四. 远程备份导入导出思维导图 一. navicat 导入 右键——>运行SQL文件 导出 选中要导出的表➡右键➡转储SQL文件➡数据和结构 二. mysqldump命令导入导出…

QTabelView使用代理自定义,第一列为QLabel第二列为下拉框

预览界面 代理源文件 CustomParamViewDelegate.cpp #include "CustomParamViewDelegate.h"CustomParamViewDelegate::CustomParamViewDelegate(QObject *parent): QStyledItemDelegate(parent) {}CustomParamViewDelegate::~CustomParamViewDelegate() {}QWidget* …

postgresql16 物理复制与逻辑复制的实现和对比

本文面向想要练习 PostgreSQL 中数据库复制基础知识但可能无法访问远程服务器的初学者。我认为学习新技术时,在自己的机器上运行示例以巩固概念是至关重要的。对于副本来说,这可能很困难,因为许多可用的资源假设用户具有一定的 PostgreSQL 经…

快乐学Python,如何使用爬虫从网页中提取感兴趣的内容?

前面的内容,我们了解了使用urllib3和selenium来下载网页,但下载下来的是整个网页的内容,那我们又怎么从下载下来的网页中提取我们自己感兴趣的内容呢?这里就需要Python的另一个库来实现-BeautifulSoup。 BeautifulSoup 是一个 Py…

【Py/Java/C++三种语言详解】LeetCode每日一题240115【链表】LeetCode82、删除排序链表中的重复节点II

文章目录 题目链接题目描述解题思路代码pythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目链接 LeetCode82、删除排序链表中的重复节点II 题目描述 给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不…

Hotspot源码解析-第十九章-ClassLoaderData、符号表、字符串表的初始化

第十九章-ClassLoaderData初始化 讲解本章先从一张图开始 众所周知,Java类的相关信息都是存储在元空间中的,但是是怎么存储的,相信很多读者是不清楚的,这里就不得不涉及到ClassLoaderDataGraph、classLoader、classLoaderData&…

容器化postgres备份策略

文章目录 1. 策略和背景1.1 背景1.2 备份策略 2. docker-compose的修改2.1 挂载备份目录2.2 备份脚本3.3 重启容器 3. 定时任务 1. 策略和背景 1.1 背景 使用docker-compose管理的postgres数据库需要备份工作目录在 /data/postgres下 1.2 备份策略 要备份的库 shu_han 库 每…

vue3中组合式api的常用方法

vue3中组合式api的常用方法 记录一下vue3中常用的组合式api&#xff0c;包括计算属性computed、监听器watch及watchEffective 一、computed 作用&#xff1a;根据已有数据计算出新数据&#xff08;和Vue2中的computed作用一致&#xff09;。 <template><div class&…

JavaScript 异步编程解决方案-中篇

天下事有难易乎&#xff1f; 为之&#xff0c;则难者亦易矣&#xff1b;不为&#xff0c; 则易者亦难矣。人之为学有难易乎&#xff1f; 学之&#xff0c;则难者亦易矣&#xff1b;不学&#xff0c;则易者亦难矣。 async 函数 和promise then的规则一样 async function fun() …

HarmonyOS4.0——ArkUI应用说明

一、ArkUI框架简介 ArkUI开发框架是方舟开发框架的简称&#xff0c;它是一套构建 HarmonyOS / OpenHarmony 应用界面的声明式UI开发框架&#xff0c;它使用极简的UI信息语法、丰富的UI组件以及实时界面语言工具&#xff0c;帮助开发者提升应用界面开发效率 30%&#xff0c;开发…

element + table 每两行对比相同值列合并

在开始之前先要明确几个概念&#xff1a; 保持不变&#xff1a;{ rowspan: 1, colspan: 1 } 删除一个单元格&#xff1a;{ rowspan: 0, colspan: 0 } 合并一个单元格&#xff1a;{ rowspan: 2, colspan: 1 } <template><div><el-table:data"tableData&quo…

二叉树的遍历 Java

二叉树的遍历 递归法前序遍历中序遍历后序遍历改进 迭代法前序、后序遍历中序遍历 Java 中 null、NULL、nullptr 区别 public class TreeNode {int val;TreeNode left;TreeNode right;TreeNode() {}TreeNode(int val) { this.val val; }TreeNode(int val, TreeNode left, Tree…

LLM推理部署(七):FireAttention——通过无损量化比vLLM快4倍

Mixtral作为第一个在数万亿tokens上训练的OSS模型&#xff0c;最近在人工智能社区掀起了波澜&#xff0c;它支持“混合专家”&#xff08;MoE&#xff09;&#xff0c;并且训练和推理速度非常快。 Fireworks AI是第一个托管Mixtral的平台&#xff0c;在Mixtral公开发布之前就托…

小程序中使用微信同声传译插件实现语音识别、语音合成、文本翻译功能----语音识别(一)

官方文档链接&#xff1a;https://mp.weixin.qq.com/wxopen/plugindevdoc?appidwx069ba97219f66d99&token370941954&langzh_CN#- 要使用插件需要先在小程序管理后台的设置->第三方设置->插件管理中添加插件&#xff0c;目前该插件仅认证后的小程序。 语音识别…

༺༽༾ཊ—游戏-01_2D-开发—ཏ༿༼༻

首先利用安装好的Unity Hub创建一个unity 2D&#xff08;URP渲染管线&#xff09;项目 选择个人喜欢的操作格局&#xff08;这里采用2 by 3&#xff09; 在Project项目管理中将双栏改为单栏模式&#xff08;个人喜好&#xff09; 找到首选项&#xff08;Preferences&#xff09…

2024 解决matplotlib中文字体问题

第一种代码&#xff08;失败代码&#xff09; import matplotlib as mpl import matplotlib.pyplot as plt from matplotlib.font_manager import FontPropertiesfont_path /Users/huangbaixi/Desktop/SimHei.ttfdef plot_demo():#print(mpl.get_cachedir())# 绘制折线图font…

【记忆化搜索】

欢迎来到Cefler的博客&#x1f601; &#x1f54c;博客主页&#xff1a;那个传说中的man的主页 &#x1f3e0;个人专栏&#xff1a;题目解析 &#x1f30e;推荐文章&#xff1a;【LeetCode】winter vacation training 前言 记忆化搜索是一种优化搜索算法的方法&#xff0c;它可…

Apache StringUtils:Java字符串处理工具类

简介 在我们的代码中经常需要对字符串判空&#xff0c;截取字符串、转换大小写、分隔字符串、比较字符串、去掉多余空格、拼接字符串、使用正则表达式等等。如果只用 String 类提供的那些方法&#xff0c;我们需要手写大量的额外代码&#xff0c;不然容易出现各种异常。现在有…