modul time

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
lukasmarti
User
Beiträge: 31
Registriert: Samstag 8. April 2006, 17:10
Wohnort: lachen (schweiz)

Wie kann man mit dem Modul time eine Software zu einem bestimmten Zeitpunkt starten lassen?

Danke
darkfrog
User
Beiträge: 26
Registriert: Mittwoch 19. Juli 2006, 16:19

unter linux geht des am besten, indem du mit cron das programm dann starten lässt

ob das mit dem time modul so praktisch ist weiß ich nicht, dazu müsste dein programm ja die ganze zeit laufen, um dann seine aktion auszuführen
Benutzeravatar
HWK
User
Beiträge: 1295
Registriert: Mittwoch 7. Juni 2006, 20:44

Es sollte recht einfach mit der sleep-Methode des time-Moduls gehen. Du brauchst lediglich die Differenz der geplanten Startzeit und der aktuellen Zeit in Sekunden als Parameter übergeben. Das Modul schläft dann wirklich und verbraucht kaum Resourcen. Nach sleep() kann das Modul dann erledigen, was immer es soll.
MfG
HWK
Python 47
User
Beiträge: 574
Registriert: Samstag 17. September 2005, 21:04

Ich hab noch ne andere Möglichkeit anzubieten, so mach ich es jedenfalls:

1.Du trägst dein Programm in die Registry unter Run ein:

Code: Alles auswählen

def registry():
   key = winreg.CreateKey(
       winreg.HKEY_LOCAL_MACHINE,
       "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
   )
   winreg.SetValueEx(key, "Programm", None, winreg.REG_SZ, "C:\Python24\Programm.py")
   winreg.CloseKey(key)
2.Du überprüfst in einer Endlossschleife die aktuelle Zeit und wenn die Zeit >= deiner geplanten Zeit ist, wird die Schleife verlassen und ruft deine anderen Funktionen auf:

Code: Alles auswählen

def start_program():
   while True:
      ctime()
      if ctime>='Mon Sep 10 16:00:00 2006':						      #Je nachdem muss geändert werden!
         break
   andere Funktion()
Das ganze könnte so aussehen:

Code: Alles auswählen

from time import ctime
import _winreg as winreg

def registry():
   key = winreg.CreateKey(
       winreg.HKEY_LOCAL_MACHINE,
       "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
   )
   winreg.SetValueEx(key, "Programm", None, winreg.REG_SZ, "C:\Python24\Programm.py")
   winreg.CloseKey(key)


def test():
    x=ctime()
    f=open('C:\\test.txt', 'w')
    f.write('Mal schauen ob es geklappt hat')
    f.write(x)
    f.close()

def start_program():
   while True:
      ctime()
      if ctime>='Mon Sep 10 16:00:00 2006':						      #Je nachdem muss geändert werden!
         break
   test()
mfg

Thomas :-)
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Python Master 47 hat geschrieben:

Code: Alles auswählen

def start_program():
   while True:
      ctime()
      if ctime>='Mon Sep 10 16:00:00 2006':						      #Je nachdem muss geändert werden!
         break
   andere Funktion()
Da würde ich aber ein time.sleep() einbauen, sonst wird mitunter mehrere hunderte Male in der Sekunde die Zeit abgefragt was unnötig Prozessorzyklen kostet.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Monk
User
Beiträge: 16
Registriert: Montag 28. August 2006, 11:27

Hallo Python Master 47

In HKEY_LOCAL_MACHINE schreiben gibt Abzüge in der B-Note. :oops:

Entweder HKEY_CURRENT_USER, wenns benutzerbezogen sein soll, oder gleich AT verwenden, wenn das Programm unabhängig vom Benutzer laufen soll. Dann entfällt auch das aktive Warten (nochmal Abzüge... ;-))

Gruß, der Monk
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

lukasmarti hat geschrieben:eine Software zu einem bestimmten Zeitpunkt starten lassen?
Hi lukasmarti!

Über das Betriebssystem gibt es geeignete Mittel. Wenn du aber ein Python-Programm ständig laufen lassen möchtest und während dieser Zeit etwas zu einem bestimmten Zeitpunkt ausführen lassen möchtest, dann bietet sich das Python-Modul ``sched`` an.

http://docs.python.org/lib/module-sched.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten