Python Funktion zu bestimmter Zeit ausführen

2 Antworten

Du kannst mit time.sleep(3) z.b. 3 min warten ( zuerst natürlich import time)

ju5t1n 
Fragesteller
 16.01.2015, 16:32

Ja klar, das würde gehen, jedoch werden noch andere Funktionen ausgeführt. time.sleep(3) bedeutet ja dass das ganze Programm für 3 sekunden angehalten wird. Und zudem wollte ich eben dass die Werte genau zu Minute 0,15,30,45 in die Datenbank geschrieben werden, und eben nicht wenn das Programm gestartet wird + 15 minuten.

Aber trotzdem Danke dass du dir meine Frage durchgelesen hast!

0

du musst zusätzlich noch eine kontrollvariable altezeit einführen mit format HH:MM

diese wird innerhalb des IFs abgefragt und danach gesetzt:

neuezeit = time.strftime("%H:%M")   # hilfsvariable

if zeit % 15 == 0 and neuezeit > altezeit:  # beim 1. mal sollte altezeit == "" sein
  altezeit = neuezeit
  c.execute ...

ohne gewähr...

ju5t1n 
Fragesteller
 17.01.2015, 12:25

Hat geklappt! Super! Da hätte ich auch mal draufkommen sollen einfach neue und alte zeit miteinander zu vergleichen. Aber wozu braucht man

zeit % 15 == 0 

? Reicht nicht einfach nur alte und neue zeit zu vergleichen? Solltest du meinen dass Python damit nur zu Minute 15 diese abfrage als true bezeichnet, geht das leider nicht. Er führt immer noch jede Minute die Funktion genau einmal aus. Um das auf Minute: 0,15,30 und 45 zu beschränken habe ich einfach noch ein IF davorgeschoben.

if zeit == 0 or zeit == 15 or zeit == 30 or zeit == 45:

Mein weiteres IF mag jetzt nicht die eleganteste Lösung sein, aber es klappt.

Vielen Dank an dich!

Jetzt wirds nur noch spannend wann sich der Raspberry mal aufhängt oder ob man über mehrere Wochen die Messung laufen lassen kann.

0