每隔5分钟运行python脚本

时间:2020-02-12 13:20:24

标签: python raspberry-pi gauge

我正忙于在树莓派上使用python脚本进行雨量计。 该脚本需要计算存储桶的技巧,并每5分钟将总降雨量写入一个csv文件。该脚本现在每299.9秒执行一次写操作,但是我希望它每5分钟写一次,例如:14:00、14:05、14:10等。

有人可以帮助我吗?

谢谢!

2 个答案:

答案 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分钟。这样一来,在您运行脚本很长时间之后,我刚才提到的轻微延迟就不会逐渐滚雪球。