Python实现定时任务的5种常用方法详解

橘子海
橘子海
发布时间:2026-10-13| 2人浏览过
原创

本文系统梳理了Python中实现定时任务的多种方案,涵盖基础的循环sleep阻塞方式、非阻塞的threading Timer机制、内置sched调度器,以及功能强大的APScheduler框架。此外还介绍了通过打包exe结合Windows计划任务实现系统级调度的方法,帮助开发者根据阻塞需求、持久化要求及部署环境选择最合适的定时执行策略。

在Python开发中,实现定时执行任务的方案丰富多样。本文将重点介绍几种主流且实用的实现路径。

方案一:循环配合sleep函数

这是最直观的实现方式,即在无限循环中执行目标任务,随后调用sleep函数等待指定时间间隔后再进行下一次执行。该方法的局限性在于控制精度较低,且由于sleep是阻塞式调用,会占用当前线程资源,可能导致程序响应延迟。

def timer(n): 
  ''''' 
  每n秒执行一次 
  ''' 
  while True:  
    print time.strftime('%Y-%m-%d %X',time.localtime())  
    yourTask() # 此处为要执行的任务  
    time.sleep(n)  

方案二:利用threading模块的Timer类

Python标准库中的threading模块提供了Timer类,可用于实现非阻塞的定时任务。与sleep不同,Timer会在指定时间后触发回调函数,期间主线程或其他代码可继续运行,互不干扰。

例如,实现3秒后执行一次打印“helloworld”的操作:

def printHello(): 
  print "hello world" 
 
Timer(3, printHello).start() 

若需实现每隔3秒循环打印一次“helloworld”,可采用递归调用的Timer方式:

def printHello(): 
  print "Hello World" 
  t = Timer(2, printHello) 
  t.start() 
 
 
if __name__ == "__main__": 
  printHello() 

方案三:使用sched模块进行调度

sched模块提供了通用的调度机制,适用于需要精确控制事件执行顺序和优先级的场景,支持延时处理及事件队列管理。

# -*- coding:utf-8 -*- 
# use sched to timing 
import time 
import os 
import sched 
 
 
# 初始化sched模块的scheduler类 
# 第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。 
schedule = sched.scheduler(time.time, time.sleep) 
 
 
# 被周期性调度触发的函数 
def execute_command(cmd, inc): 
  ''''' 
  终端上显示当前计算机的连接情况 
  ''' 
  os.system(cmd) 
  schedule.enter(inc, 0, execute_command, (cmd, inc)) 
 
 
def main(cmd, inc=60): 
  # enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数, 
  # 给该触发函数的参数(tuple形式) 
  schedule.enter(0, 0, execute_command, (cmd, inc)) 
  schedule.run() 
 
 
# 每60秒查看下网络连接情况 
if __name__ == '__main__': 
  main("netstat -an", 60) 

方案四:采用APScheduler定时框架

APScheduler是一个基于Quartz的Python定时任务框架,功能强大。它支持基于日期、固定时间间隔以及Crontab表达式等多种触发类型,并具备任务持久化能力,适合复杂业务场景。

由于作者尚未对该框架进行实际测试,后续若有深入使用经验,将补充相关实践内容。

方案五:结合Windows系统定时任务

对于Windows环境,可将Python脚本打包为exe可执行文件,随后利用Windows自带的“任务计划程序”设置定时执行规则。这种方式不依赖Python进程常驻,系统资源占用更低,适合长期运行的后台任务。

以上内容总结了Python实现定时任务的主要技术手段,旨在为不同场景下的开发需求提供参考。希望这些信息能对您的学习与实践有所帮助,欢迎持续关注本站获取更多技术分享。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。