[英]Run python script every 5 minutes on the clock
我正忙於在樹莓派上編寫一個用於雨量計的 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
的確切時間之后time_to_round
,因為顯然計算機不能在精確的零時間內工作。 不過保證在那個時間之前不會醒來。 如果要在do_my_thing()
引用“當前時間”,請傳入time_rounded
變量,以便在日志文件中獲得整潔的時間戳。
在上面的代碼中,我每次都特意重新計算time_to_wait
,而不是第一次將其設置為 5 分鍾后。 這樣我剛剛提到的輕微延遲不會在您運行腳本很長時間后逐漸滾雪球。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.