CircuitPython_Schedule 简介
python中有一个轻量级的定时任务调度的库:schedule。他可以完成每分钟,每小时,每天,周几,特定日期的定时任务。因此十分方便我们执行一些轻量级的定时任务。
import schedule
import time
def job():
print("I'm working...")
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every(5).to(10).days.do(job)
schedule.every().monday.do(job)
schedule.every().wednesday.at("13:15").do(job)
while True:
schedule.run_pending()
time.sleep(1)
意思就是:
- 每隔十分钟执行一次任务
- 每隔一小时执行一次任务
- 每天的10:30执行一次任务
- 每隔5到10天执行一次任务
- 每周一的这个时候执行一次任务
- 每周三13:15执行一次任务
而CircuitPython_Schedule是用于CircuitPython的精简版时间表库
这个库是Python schedule library的缩小版本。基于Dan Bader (dbader)的这个优秀的库。
CircuitPython_Schedule 依赖
这个库的依赖项目:
请确保CircuitPython文件系统中的所有依赖项都可用。这可以通过下载Adafruit库和驱动包轻松实现
在支持的GNU/Linux系统(如Raspberry Pi)上,你可以在本地从PyPI安装该驱动。要为当前用户安装。
pip3 install circuitpython-schedule
要在整个系统内安装(在某些情况下可能需要这样做)。
sudo pip3 install circuitpython-schedule
要在你当前项目的虚拟环境中安装。
mkdir project-name && cd project-name
python3 -m venv .env
source .env/bin/activate
pip3 install circuitpython-schedule
使用实例
# SPDX-FileCopyrightText: 2017 Scott Shawcroft, 为Adafruit Industries编写
# SPDX-FileCopyrightText: Copyright (c) 2021 Nathan Byrd
# SPDX-License-Identifier: 麻省理工学院
import time
import rtc
import busio
import board
import adafruit_pcf8523
import circuitpython_schedule as schedule
def greet():
print("Hello, world!")
i2c = busio.I2C(board.SCL, board.SDA)
rtc_device = adafruit_pcf8523.PCF8523(i2c)
rtc.RTC().datetime = rtc_device.datetime
# 每10秒安排一次
schedule.every(10).seconds.do(greet)
# 每10分钟安排一次
schedule.every(10).minutes.do(greet)
# 每天安排一次
schedule.every().day.at("10:30").do(greet)
# 从5到10分钟的时间表
schedule.every(5).to(10).minutes.do(greet)
# 在某一天的时间表
schedule.every().monday.do(greet)
# 安排日期和时间
schedule.every().wednesday.at("13:15").do(greet)
# 每分钟安排一次,每次17秒
schedule.every().minute.at(":17").do(greet)
while True:
# 运行任何未完成的工作
schedule.run_pending()
time.sleep(1)