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.
Optimale Methode funktion zur bestimmten Zeit zu starten?
- 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.
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
assert encoding_kapiert
@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.
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.
ich denke arp möchte die Funktion asynchron zu seiner "normalen" Verarbeitung aufrufen. Hierfür würde sich z.B. das Modul threading anbieten:
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.
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()
- noisefloor
- User
- Beiträge: 4159
- 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
in der Standardbibliothek gibt es das Modul sched - vielleicht kannst du damit was anfangen.
Gruß, noisefloor