Seite 1 von 1
Optimale Methode funktion zur bestimmten Zeit zu starten?
Verfasst: Montag 8. August 2011, 20:11
von Arp
Hi,
Was ist die optimale Methode in python eine funktion oder einen befehl nur zu einer bestimmten Zeit zu starten?
ich habs bislang so gelöst das ich ständig die uhrzeit abfrage, und wenn die Zeit im rahmen liegt, wirds ausgeführt, ansonsten gewartet.
geht das noch irgendwie effektiver ohne in einer Schleife die Zeit abzufragen?
thx.
Re: Optimale Methode funktion zur bestimmten Zeit zu starten
Verfasst: Montag 8. August 2011, 20:19
von Hyperion
Die Frage wäre zunächst einmal, ob das in Python selber gelöst werden muss? Unter Linux kann man ja ein Script als Cronjob ausführen lassen oder per ``at``.
Ansonsten wüßte ich keinen anderen Weg. Irgend etwas muss ja prüfen, ob eine bestimmte Zeit erreicht ist und dann etwas aufrufen. Ob das nun in Python selber oder durch das OS passiert, ist ja vom Grundsatz her egal.
Re: Optimale Methode funktion zur bestimmten Zeit zu starten
Verfasst: Montag 8. August 2011, 22:42
von deets
@Arp
Neben den richtigen Anmerkungen von Hyperion kannst du das warten ja auch optimieren - naemlich so lange zu warten, bis die Zeit erreicht ist. Das spart Rechenzeit. Je nach Umgebung eben sleep, oder einen Timer setzen.
Re: Optimale Methode funktion zur bestimmten Zeit zu starten
Verfasst: Dienstag 9. August 2011, 07:08
von LivingOn
ich denke
arp möchte die Funktion asynchron zu seiner "normalen" Verarbeitung aufrufen. Hierfür würde sich z.B. das Modul threading anbieten:
Code: Alles auswählen
import threading
def callback():
print("*** Ich wurde zeitgesteuert aufgerufen ***")
sekunden_bis_zum_aufruf = 3
timer = threading.Timer(sekunden_bis_zum_aufruf, callback)
timer.start()
raw_input("ENTER um Script zu beenden\n")
timer.cancel()
Anstelle von row_input(...) könnte auch eine x-beliebige andere Verarbeitung stattfinden. Sollte das Script vorzeitig beendet werden, sollte man nicht vergessen auch den Timer zu beenden.
Re: Optimale Methode funktion zur bestimmten Zeit zu starten
Verfasst: Mittwoch 10. August 2011, 06:22
von noisefloor
Hallo,
in der Standardbibliothek gibt es das Modul
sched - vielleicht kannst du damit was anfangen.
Gruß, noisefloor