2017-08-25 Python2> datetime> Attendre l'heure de début, minute et seconde

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.

Pour l'importation

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())

Pour l'importation> v0.2

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())

Recommended Posts

2017-08-25 Python2> datetime> Attendre l'heure de début, minute et seconde
Démarrer python
Python> datetime> arguments d'exécution> démarrer le traitement immédiatement
Commencez à utiliser Python
Démarrage rapide de Python
[Python] Commencez à étudier