Python Timer

Gast
Auf die schnelle, wuerde ich das von Hand in etwa so machen. Nicht 
schoen, aber selten:
1
#!/usr/bin/env python
2

3
import datetime
4
import threading
5

6

7
def do_your_work():
8
    # do your work
9
    pass
10

11

12
def get_time_as_str():
13
    time = datetime.datetime.now()
14
    return str(time)[11:16]
15

16

17
def is_it_time_to_end(deadline):
18
    if get_time_as_str() == deadline:
19
        return True
20
    else:
21
        return False
22

23

24
def main():
25
    start = "08:00"
26
    end = "08:15"
27

28
    start_triggerd = False
29

30
    timer = threading.Event()
31

32
    while True:
33
        if start_triggerd is False and get_time_as_str() == start:
34
            start_triggerd = True
35
        else:
36
            print(get_time_as_str())
37
            timer.wait(60.0)
38
            continue
39

40
        while is_it_time_to_end(end) is False:
41
            do_your_work()
42

43
        start_triggerd = False
44

45

46
if __name__ == '__main__':
47
    main()

Das Zeitmanagement beim Warten koennte man verbessern.
Gast
Ich habs nochmal ueberarbeteitet.
1
#!/usr/bin/env python
2

3
import datetime
4
import threading
5

6

7
def do_your_work():
8
    # do your work
9
    pass
10

11

12
def get_time_as_num():
13
    time = datetime.datetime.now()              # -> 2019-01-12 11:09:33.033172
14
    time = str(time)[11:13] + str(time)[14:16]  # 2019-01-12 11:09:33.033172 -> 11:09 -> 1109
15
    return int(time)
16

17

18
def main():
19
    start = 800    # 08:00 Uhr
20
    end = 815      # 08:15 Uhr
21

22
    timer = threading.Event()
23

24
    while True:
25
        time = get_time_as_num()
26
        if time >= start and time <= end:
27
            while get_time_as_num() < end:
28
                do_your_work()
29

30
        timer.wait(59.0)
31

32

33
if __name__ == '__main__':
34
    main()
Ist noch immer nicht schoen, und das Zeitmanagement kann man immernoch 
verbessern. Aber fuer auf die schnelle am Morgen.

Gruesse

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.