Environnement d'exploitation
Raspberry Pi 2 Model B (En dessous de RPi)
Raspbian Jessie
Python 2.7.9
Il faut attendre l'heure de démarrage pour que RPi prenne en charge la fonction d'enregistrement automatique.
Il a été mis en œuvre comme suit.
test_wait_170825.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import time
import serial
import datetime
# SET start time
start_time = datetime.time(13,45,0)
start_str = start_time.strftime("%H:%M:%S")
while True:
now_time = datetime.datetime.now()
if start_str == now_time.strftime("%H:%M:%S"):
break
time.sleep(0.1) # [sec]
print('hello')
print(datetime.datetime.now())
run
$ python test_wait_170825.py
hello
2017-08-25 13:45:00.074149
L'intervalle d'interrogation pour time.sleep () pourrait être un peu plus long (comme 0,3).
Il existe un moyen d'utiliser crontab pour ce type de traitement, mais je l'ai implémenté en Python car je souhaite le gérer collectivement avec du code Python.
util_wait_170825.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import time
import datetime
def wait_until(HH, MM, SS):
start_time = datetime.time(HH, MM, SS)
start_str = start_time.strftime("%H:%M:%S")
while True:
now_time = datetime.datetime.now()
if start_str == now_time.strftime("%H:%M:%S"):
break
time.sleep(0.1) # [sec]
if __name__ == '__main__':
print('start waiting')
wait_until(13, 58, 30) # HH, MM, SS
print('hello')
print(datetime.datetime.now())
J'ai utilisé la méthode d'implémentation de @shiracamus. Merci pour l'information.
util_wait_170825.py
from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
import time
import datetime
def wait_until(HH, MM, SS):
now = datetime.datetime.now()
start = datetime.datetime(now.year, now.month, now.day, HH, MM, SS)
wait_sec = (start - now).total_seconds()
if wait_sec < 0:
wait_sec += datetime.timedelta(days=1).total_seconds()
time.sleep(wait_sec)
if __name__ == '__main__':
print('start waiting')
wait_until(14, 33, 30) # HH, MM, SS
print('hello')
print(datetime.datetime.now())