让Python程序定时执行的8种方法整理
1. 使用time模块和sleep()
我们可以使用time模块的sleep()函数来让程序暂停一段时间,从而实现定时执行的效果。例如,我们可以使用以下代码让程序每30秒钟输出一次当前时间:
import time
while True:
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
time.sleep(30)
这里的time.strftime()函数用于获取当前时间并将其格式化输出。
2. 使用sched模块
sched模块是Python标准库中的一个调度模块,它可以用于在指定的时间执行特定的任务。例如,以下代码可以让程序在指定的时间执行一些操作:
import sched
import time
scheduler = sched.scheduler(time.time, time.sleep)
def print_time():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
scheduler.enterabs(time.mktime(time.strptime("2021-08-01 12:00:00", "%Y-%m-%d %H:%M:%S")), 1, print_time, ())
scheduler.run()
这里的scheduler.enterabs()函数用于在指定的时间执行指定的函数,time.mktime()函数用于将时间转换为秒数。
3. 使用APScheduler模块
APScheduler是一个Python中实现的轻量级定时任务调度库,它支持多种定时任务触发器,包括日期时间、固定时间间隔和Cron风格的定时器。例如,以下代码可以让程序每隔一分钟输出一次当前时间:
from apscheduler.schedulers.blocking import BlockingScheduler
import time
def print_time():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
scheduler = BlockingScheduler()
scheduler.add_job(print_time, 'interval', minutes=1)
scheduler.start()
这里的scheduler.add_job()函数用于添加任务,并设置触发器为每隔一分钟执行一次。
4. 使用系统定时任务
在Unix和Linux系统上,我们可以使用crontab命令来设置定时任务。例如,以下命令可以让程序每隔一分钟输出一次当前时间:
* * * * * python /path/to/script.py
这里的 * * * 表示时间规则,意为每分钟都执行,后面的python /path/to/script.py表示要执行的脚本文件。
5. 使用Windows任务计划程序
在Windows系统上,我们可以使用任务计划程序来设置定时任务。例如,以下步骤可以让程序每隔一分钟输出一次当前时间:
- 打开“任务计划程序”;
- 点击“创建任务”;
- 在“触发器”选项卡中设置触发时间;
- 在“操作”选项卡中添加要执行的程序和参数。
6. 使用Celery分布式任务队列
Celery是一个Python中常用的分布式任务队列,它可以用于执行定时任务、异步任务、周期性任务等。例如,以下代码可以让Celery每隔一分钟执行一次指定的任务:
from celery import Celery
import time
app = Celery('tasks', broker='pyamqp://guest@localhost//')
@app.task
def print_time():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
app.conf.beat_schedule = {
'print_time': {
'task': 'tasks.print_time',
'schedule': 60.0
}
}
app.conf.timezone = 'UTC'
这里的app.conf.beat_schedule字典用于设置任务,并设置触发器为每隔一分钟执行一次,app.conf.timezone用于设置时区。
7. 使用第三方库schedule
schedule是一个Python中的第三方库,它提供了简单的API用于执行定时任务。例如,以下代码可以让程序每隔一分钟输出一次当前时间:
import schedule
import time
def print_time():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
schedule.every(1).minutes.do(print_time)
while True:
schedule.run_pending()
time.sleep(1)
这里的schedule.every()函数用于设置任务,并设置触发器为每隔一分钟执行一次。
8. 使用第三方库apscheduler
除了APScheduler,还有一种名为apscheduler的Python第三方库可以用于执行定时任务。例如,以下代码可以让程序每隔一分钟输出一次当前时间:
from apscheduler.schedulers.background import BackgroundScheduler
import time
def print_time():
print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))
scheduler = BackgroundScheduler()
scheduler.add_job(print_time, 'interval', minutes=1)
scheduler.start()
while True:
time.sleep(1)
这里的scheduler.add_job()函数用于设置任务,并设置触发器为每隔一分钟执行一次。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:让Python程序定时执行的8种方法整理 - Python技术站