我正忙于在树莓派上使用python脚本进行雨量计。 该脚本需要计算存储桶的技巧,并每5分钟将总降雨量写入一个csv文件。该脚本现在每299.9秒执行一次写操作,但是我希望它每5分钟写一次,例如:14:00、14:05、14:10等。
有人可以帮助我吗?
谢谢!
答案 0 :(得分:3)
使用cronjob,与crontab一起用于树莓派 https://www.raspberrypi.org/documentation/linux/usage/cron.md
答案 1 :(得分:0)
您会在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分钟。这样一来,在您运行脚本很长时间之后,我刚才提到的轻微延迟就不会逐渐滚雪球。