2017-08-25 Python2> datetime> Warten Sie bis zum Start von Stunde, Minute und Sekunde

Betriebsumgebung


Raspberry Pi 2 Model B (Unterhalb von RPi)
Raspbian Jessie
Python 2.7.9

Warten Sie, bis die Startzeit erforderlich ist, damit RPi die automatische Protokollierungsfunktion übernimmt.

Es wurde wie folgt implementiert.

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

Das Abfrageintervall für time.sleep () kann etwas länger sein (z. B. 0,3).

Es gibt eine Möglichkeit, crontab für diese Art der Verarbeitung zu verwenden, aber ich habe es in Python implementiert, weil ich es gemeinsam mit Python-Code verwalten möchte.

Zum Importieren

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

Für den Import> v0.2

Ich habe die Implementierungsmethode von @shiracamus verwendet. Danke für die 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> Warten Sie bis zum Start von Stunde, Minute und Sekunde
Starten Sie Python
Python> Datum / Uhrzeit> Laufzeitargumente> Starten Sie die Verarbeitung sofort
Starten Sie Python
Python-Schnellstart
[Python] Beginne zu lernen