我正忙着在树莓派上使用Python脚本进行雨量计。该脚本需要计算存储桶的技巧,并每5分钟将总降雨量写入csv文件。该脚本现在每299.9秒执行一次写操作,但我希望它每5分钟写一次,例如:14:00、14:05、14:10等。
有人可以帮助我吗?
提前感谢!
使用cronjob,对于带有crontab的树莓派,https://www.raspberrypi.org/documentation/linux/usage/cron.md
您会在datetime
模块中找到许多有用的功能:
from datetime import datetime, timedelta
# Bootstrap by getting the most recent time that had minutes as a multiple of 5
time_now = datetime.utcnow() # Or .now() for local time
prev_minute = time_now.minute - (time_now.minute % 5)
time_rounded = time_now.replace(minute=prev_minute, second=0, microsecond=0)
while True:
# Wait until next 5 minute time
time_rounded += timedelta(minutes=5)
time_to_wait = (time_rounded - datetime.utcnow()).total_seconds()
time.sleep(time_to_wait)
# Now do whatever you want
do_my_thing()
请注意,当调用do_my_thing()
时,它实际上将在time_to_round
中的确切时间之后的某个时间,因为显然计算机无法在精确的零时间内工作。但是可以保证在此之前不会醒来。如果要引用do_my_thing()
中的“当前时间”,请传入time_rounded
变量,以便在日志文件中获得简洁的时间戳。
在上面的代码中,我每次都故意重新计算time_to_wait
,而不是将其第一次设置为5分钟。这样一来,在您运行脚本很长时间后,我刚才提到的轻微延迟就不会逐渐滚雪球。