Python: 定时运行程序

在日常工作中,我们有时需要定时运行某个程序。例如,某个表格每天会更新,我们需要定时查看以获取最新的数据。下面介绍两种方法来实现程序的定时运行。

1. 使用 while Truesleep() 实现定时任务

time 模块中的 sleep(secs) 函数可以使当前执行的线程暂停 secs 秒后再继续执行。暂停意味着当前线程进入阻塞状态,直到达到 sleep() 函数设定的时间后,线程从阻塞状态转为就绪状态,等待 CPU 调度。

利用这种特性,我们可以通过 while 死循环结合 sleep() 来实现简单的定时任务。

下面的代码块实现的功能是:每5秒打印一次当前时间。

from datetime import datetimeimport time

每n秒执行一次

def timer(n):while True:print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))time.sleep(n)

主程序

timer(5)

注:strftime() 方法返回一个表示日期和时间的字符串,使用日期、时间或日期时间对象。

立即学习“Python免费学习笔记(深入)”;

上述代码块的运行效果:

Python:  定时运行程序

这种方法的缺点是,只能执行固定间隔时间的任务,并且 sleep() 是一个阻塞函数,意味着在 sleep() 这一段时间内,当前程序无法执行其他任务。

2. 使用 threading 模块中的 Timer

threading 模块中的 Timer 是一个非阻塞函数,这一点比 sleep() 稍好一些。然而,它的缺点同样是只能执行固定间隔时间的任务。

Timer 函数的第一个参数是时间间隔(单位是秒),第二个参数是要调用的函数名,第三个参数是调用函数的位置参数(可以使用元组或列表)。

threading.Timer(interval, function, args=None, kwargs=None)

创建一个定时器,在经过 interval 秒后运行 function 函数,并传递参数 args 和关键字参数 kwargs。如果 argsNone(默认值),则使用一个空列表。如果 kwargsNone(默认值),则使用一个空字典。

下面的代码块实现的功能是:每5秒打印一次当前时间。

from datetime import datetimefrom threading import Timer

打印时间函数

def print_time(inc):print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))t = Timer(inc, print_time, (inc,))t.start()

5秒

print_time(5)

运行效果:

一览运营宝 一览运营宝

一览“运营宝”是一款搭载AIGC的视频创作赋能及变现工具,由深耕视频行业18年的一览科技研发推出。

一览运营宝 41 查看详情 一览运营宝

Python:  定时运行程序

上述代码块中运用了递归的思想。在 print_time 函数中,当打印出当前时间后,又设置了一个定时器线程 Timer,这就完成了一个递归操作,间隔5秒重复执行定时任务。

下面的代码块实现类似的功能:每5秒打印一次当前时间。

import timeimport threading

def create_timer(inc):t = threading.Timer(inc, repeat, [inc])t.start()

def repeat(inc):print('Now:', time.strftime('%H:%M:%S', time.localtime()))create_timer(inc)

create_timer(5)

运行效果:

Python:  定时运行程序

参考资料:

[1] Python 实现定时任务的八种方案(https://www.php.cn/link/69a439a315090bb3660bf73909829363)

[2] Python: 定时任务的实现方式(https://www.php.cn/link/945beadd1794ee1affd8a65dad8b844e)

[3] Python strftime()(https://www.php.cn/link/16db7db24367bf438df20ad57112c8e0)

[4] threading(https://www.php.cn/link/2a3eac42d756ec782ecca7dcd94259d7)

[5] python 线程定时器Timer(https://www.php.cn/link/e0367289ec0a27a321e4c726d00984eb)

[6] time(https://www.php.cn/link/2e99e68e7c01590f28bf0b64e645f856)

以上就是Python: 定时运行程序的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/471297.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 07:36:21
下一篇 2025年11月8日 07:38:56

相关推荐

  • JavaScript中的Web Assembly(WASM)带来了哪些性能突破?

    WASM通过接近原生的执行速度、更小的二进制体积和跨平台能力,显著提升Web性能;它与JavaScript互补,使浏览器能运行AutoCAD、Figma等重型应用,并支持4K视频处理、大模型训练等复杂任务,推动Web向桌面级体验演进。 WebAssembly(WASM)为JavaScript生态带来…

    2025年12月20日
    000
  • 如何实现一个支持LRU缓存算法的数据结构?

    答案:结合哈希表和双向链表实现LRU缓存,哈希表支持O(1)查找,双向链表维护访问顺序,头结点为最近使用,尾结点为最久未使用;get操作查找不到返回-1,找到则移到头部并返回值;put操作若键存在则更新并移至头部,否则创建新节点插入头部,超容量时删除尾部节点;通过add_to_head、remove…

    2025年12月20日
    000
  • 将内存中的图像数据作为文件上传至服务器的教程

    本教程详细阐述了如何在不将图像数据保存到本地文件系统的情况下,将其从内存(如剪贴板Bitmap)作为文件发送到服务器。核心方法包括将内存中的图像(如Bitmap)转换为字节流,并通过HTTP multipart/form-data请求进行高效、安全的传输。教程将涵盖客户端数据准备、请求构建、服务器端…

    2025年12月20日
    000
  • 高效传输:直接将剪贴板位图数据作为文件上传至服务器

    本教程详细阐述了如何在不将图像保存到本地文件系统的情况下,将从剪贴板获取的位图数据作为文件发送至服务器。核心方法是将位图转换为字节流,并通过HTTP multipart/form-data请求进行传输,确保数据高效且安全地到达服务器,适用于各种技术栈。 理解核心挑战与解决方案 在开发中,我们经常会遇…

    2025年12月20日
    000
  • 无需本地存储:将剪贴板图像作为文件上传至服务器的通用策略

    本文探讨了如何在不将剪贴板图像保存到本地文件系统的情况下,将其作为文件发送至服务器。核心策略是将位图数据转换为字节流,并通过HTTP multipart/form-data请求进行传输,确保高效且无痕的数据上传。教程将涵盖从客户端获取位图、数据编码、构建请求到服务器端处理的完整流程,并提供关键注意事…

    2025年12月20日
    000
  • 高效传输:将剪贴板图像作为文件上传至服务器的实现指南

    本教程将详细介绍如何在不将剪贴板中的Bitmap图像保存到本地文件系统的情况下,将其作为文件数据高效传输至服务器。核心方法涉及将图像转换为字节流,并通过HTTP multipart/form-data请求进行发送,确保数据传输的便捷性与安全性。 核心原理概述 当需要将剪贴板中的图像数据发送到服务器,…

    2025年12月20日
    000
  • 如何利用机器学习库(如TensorFlow.js)在浏览器中实现智能功能?

    答案:通过TensorFlow.js在浏览器中运行机器学习模型,可实现无需服务器参与的智能功能。加载预训练或自定义模型后,将图像、音频等输入数据转为张量并执行推理,如用MobileNet分类图像或用PoseNet识别人体姿态。结合WebGL加速、推理频率控制和Web Worker优化性能,适用于实时…

    2025年12月20日
    000
  • 如何用TensorFlow.js在浏览器中运行机器学习模型?

    通过TensorFlow.js可在%ignore_a_1%中直接运行机器学习模型,1. 引入CDN脚本加载库;2. 加载预训练模型如MobileNet;3. 将图像转为张量并推理;4. 使用dispose或tidy管理内存,实现高效、隐私安全的前端AI推理。 在浏览器中运行机器学习模型可以通过 Te…

    2025年12月20日
    000
  • 在编写测试时,如何模拟一个复杂的第三方 API 或浏览器环境?

    使用Mock和Stub隔离外部依赖,通过工具如unittest.mock、responses、jest.mock等模拟API响应,结合JSDOM、React Testing Library等框架模拟浏览器环境,定义多场景响应验证错误处理,在复杂场景下采用Docker仿真服务或契约测试Pact,确保测…

    2025年12月20日
    000
  • Brython实战:构建交互式姓名输入与欢迎界面

    本教程详细讲解如何使用Brython实现一个动态的Web表单交互。通过绑定表单提交事件,用户输入姓名后,页面上的表单将自动隐藏,并在指定区域显示个性化的欢迎信息。文章将提供完整的HTML结构和Brython脚本代码,帮助开发者快速掌握Brython在前端交互中的应用。 动态表单交互概述 在现代web…

    2025年12月20日
    000
  • 如何解决Mineflayer Python机器人中的ENOTFOUND错误

    本文旨在解决使用Python通过javascript模块运行Mineflayer机器人时遇到的ENOTFOUND错误。尽管该错误通常指向主机或端口配置问题,但实际案例表明,一个过于复杂或动态生成的用户名也可能是导致连接失败的间接原因。教程将提供解决方案和相关排查建议。 Mineflayer在Pyth…

    2025年12月20日
    000
  • 如何利用JavaScript进行时间序列数据的分析与预测?

    JavaScript可通过数据清洗、趋势分析、简单预测模型和可视化实现时间序列分析。1. 将时间字段转为Date对象并排序,用前向填充处理缺失值;2. 使用simple-statistics等库进行线性回归,计算斜率判断趋势方向;3. 应用移动平均或指数平滑法做短期预测;4. 结合Chart.js或…

    2025年12月20日
    000
  • 使用Brython实现动态表单与个性化欢迎消息展示

    本文详细介绍了如何利用Brython在网页中创建动态交互式表单。通过一个输入姓名的示例,演示了如何在表单提交后,实现表单自动隐藏,并同时在一个指定区域显示包含用户输入姓名的个性化欢迎消息。教程涵盖了HTML结构搭建、Brython事件绑定、DOM元素操作等核心技术,旨在帮助开发者构建响应式且用户友好…

    2025年12月20日
    000
  • Brython实现动态表单交互:提交后隐藏并显示欢迎信息

    本文详细介绍了如何使用Brython实现一个交互式网页表单。用户输入姓名并提交后,表单将自动从页面中移除,同时一个个性化的欢迎消息会动态显示出来。教程将涵盖必要的HTML结构、Brython事件绑定机制以及DOM操作技巧,帮助读者轻松创建响应式的前端功能。 1. 概述与目标 在现代web应用中,动态…

    2025年12月20日
    000
  • 解决GPT-3.5 API生成无关代码的问题:优化模型选择与提示工程

    在使用GPT-3.5 API构建应用时,text-davinci-003模型有时会生成不相关或意外的代码片段,尤其是在处理代码或复杂对话任务时。本文旨在解决这一问题,核心在于强调模型选择的重要性,推荐使用更适合此类任务的指令遵循模型(如gpt-3.5-turbo或gpt-4),并深入探讨如何通过精细…

    2025年12月20日
    000
  • 如何用WebGPU加速浏览器端的机器学习推理?

    WebGPU通过提供现代、低开销的GPU计算能力,显著提升了浏览器端机器学习推理的性能。相比为图形渲染设计的WebGL,WebGPU原生支持通用计算,具备更低API开销、更高效的内存管理和更强的并行处理能力,能直接执行计算着色器,避免WebGL将数据编码到纹理等间接操作。其核心优势包括更高的执行效率…

    2025年12月20日
    000
  • 怎样使用JavaScript操作PDF文档(生成、编辑、预览)?

    JavaScript结合前后端技术可实现PDF生成、编辑和预览:1. 生成PDF可用jsPDF或html2pdf.js在前端创建简单文档,或用Puppeteer在Node.js生成高质量PDF;2. 编辑PDF可通过PDF-LIB库修改内容,复杂操作建议后端集成PDFKit或Python工具处理;3…

    2025年12月20日
    000
  • 如何利用JavaScript进行自然语言处理(NLP)的基本任务?

    JavaScript可通过natural、@nlpjs等库实现文本分词、词性标注、情感分析和命名实体识别,适用于前端轻量级NLP任务。 JavaScript 虽然不是自然语言处理(NLP)的主流语言,但借助现代库和浏览器能力,依然可以完成许多基础 NLP 任务。以下是几种常见任务及其在 JavaSc…

    2025年12月20日
    000
  • React 应用管理员面板构建:从本地 JSON 到生产级数据管理

    本文旨在指导React应用开发者如何为电商网站等应用构建管理员面板,以实现数据(如商品卡片)的增删改查。文章将探讨从本地JSON文件管理的局限性,到利用浏览器端文件下载模拟数据更新的临时方案,再到后端服务和无头CMS(如Strapi)等生产级解决方案,帮助开发者选择最适合其项目需求的数据管理策略。 …

    2025年12月20日
    000
  • 构建React应用管理后台:从本地JSON到Headless CMS的实践指南

    本文探讨了为React应用创建管理后台的多种方法,特别针对从本地JSON文件管理数据到实现可编辑、删除和添加内容的场景。我们将深入分析直接操作本地文件的局限性,介绍后端服务的重要性,并重点推荐使用Strapi等无头CMS作为高效、可扩展的解决方案,帮助开发者轻松构建功能完善的管理界面。 React应…

    2025年12月20日
    000

发表回复

登录后才能评论
关注微信