Optimale Methode funktion zur bestimmten Zeit zu starten?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Arp
User
Beiträge: 65
Registriert: Dienstag 15. März 2011, 13:21

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.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
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.
LivingOn
User
Beiträge: 33
Registriert: Montag 11. August 2008, 07:53

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.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

in der Standardbibliothek gibt es das Modul sched - vielleicht kannst du damit was anfangen.

Gruß, noisefloor
Antworten