Python中的时间表
本教程将演示Python中的Schedule包,用于在特定时间间隔后定期调度作业。
Schedule是Python中的轻量级进程调度程序库,用于调度任务以指定的时间间隔定期运行。
我们可以使用人性友好的语法调用函数或任何可调用对象,以自动执行发送电子邮件、设置提醒、定期获取货币价格或比特币等任务。
在Python中安装日程库
我们必须先使用以下命令安装这个包。
#Python 3.x
pip install schedule
要调度作业,我们使用以下语法。
语法:
#Python 3.x
Schedule.every(interval).[timeframe].do(function)
产品参数:
interval
可以是任何整数。timeframe
可以是秒、分钟、小时、天,甚至是工作日的名称,如星期一、星期二等。do()
方法将函数名作为参数进行调度。
使用秒作为间隔定期调度作业
在下面的代码中,我们有一个名为task
的方法,计划在每五秒后周期性运行一次。我们将时间间隔(在我们的例子中是5秒)定义为every()
方法的参数。
我们指定要调度的函数作为do()
方法的参数,一旦机器到达指定的时间,该方法将自动运行。最后,我们在run_pending()
循环中执行while
函数,以连续运行调度的作业。
在输出中,消息Task is running
按照编程每隔5秒显示一次。
示例代码:
#Python 3.x
import schedule as s
import time as t
def task():
print("Task is running")
s.every(5).seconds.do(task)
while True:
s.run_pending()
t.sleep(1)
输出:
#Python 3.x
Task is running
Task is running
Task is running
Task is running
Task is running
使用分钟、小时和天作为时间间隔定期安排作业
如果我们想将间隔更改为任何指定的分钟、小时或星期几,我们可以这样编写代码。输出将根据设置的时间保持显示消息。
示例代码:
#Python 3.x
import schedule as s
import time as t
def task():
print("Task is running")
s.every(5).minutes.do(task)
s.every(10).hours.do(task)
s.every().monday.do(task)
while True:
s.run_pending()
t.sleep(1)
输出:
#Python 3.x
Task is running
Task is running
Task is running
使用时间 HH:MM
设置为间隔格式以定期安排作业
我们也可以以HH:MM:SS
格式设置一个特定的时间作为函数的参数。消息将在每个指定的时间间隔后定期显示。
示例代码:
#Python 3.x
import schedule as s
import time as t
def task():
print("Task is running")
s.every().day.at("04:21").do(task)
s.every().monday.at("12:00").do(task)
while True:
s.run_pending()
t.sleep(1)
输出:
#Python 3.x
Task is running
使用函数装饰器调度作业
函数装饰器接受一个函数作为输入,添加一些功能,并返回一个函数。我们将在这里使用@repeat
来调度任务函数。
示例代码:
#Python 3.x
from schedule import every, run_pending, repeat
import time as t
@repeat(every(5).seconds)
def task():
print("Task is running")
while True:
run_pending()
t.sleep(1)
输出:
#Python 3.x
Task is running
Task is running
Task is running
立即运行作业
我们可以在作业运行后使用CancelJob
和schedule实例取消它,从而立即运行作业。
示例代码:
#Python 3.x
import schedule as s
import time as t
def task():
print("Task is running")
return s.CancelJob
s.every(5).seconds.do(task)
while True:
s.run_pending()
t.sleep(1)
输出:
#Python 3.x
Task is running
取消所有作业
我们可以使用调度器实例的clear()
方法取消调度器中的所有作业。在这里,我们使用了get_jobs()
方法来打印调度器中的调度作业。
示例代码:
#Python 3.x
import schedule as s
import time as t
def task():
print("Task is running")
s.every(5).seconds.do(task)
print("Jobs:", s.get_jobs())
s.clear()
print("Jobs:", s.get_jobs())
输出:
#Python 3.x
Jobs: [Every 5 seconds do task() (last run: [never], next run: 2022-04-08 16:59:37)]
Jobs: []
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布,任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站。本站所有源码与软件均为原作者提供,仅供学习和研究使用。如您对本站的相关版权有任何异议,或者认为侵犯了您的合法权益,请及时通知我们处理。