每隔5分钟运行python脚本

问题描述 投票:0回答:2

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

有人可以帮助我吗?

提前感谢!

python raspberry-pi gauge
2个回答
3
投票

使用cronjob,对于带有crontab的树莓派,https://www.raspberrypi.org/documentation/linux/usage/cron.md


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

© www.soinside.com 2019 - 2024. All rights reserved.