ich habe einen Prozess, der eine Ansicht aktualisieren soll. Der Prozess soll auf Knopfdruck gestartet werden, die Aktion ausführen und sich dann für 30 Sekunden schlafen legen und danach die Aktion wieder ausführen. Der Prozess selber darf nicht doppelt gestartet werden.
Wie mache ich das am besten.
Ich habe das ganze mit threading versucht. Bin aber irgendwie nicht auf einen Grünen Zweig gekommen. Also die UpdateFunktion an sich ist kein großer Akt.
so in der Richtung habe ich probiert. Das hat aber zur Folge, dass der Thread mehrfach gestartet werden kann und ich mit dem Ergebnis nicht wirklich zufrieden bin.
Code: Alles auswählen
def update():
while 1:
logging.debug('doing update')
time.sleep(30)
a = threading.Thread(target=update, name='updateThread')
a.start()
Was mir gerade noch eingefallen ist.
Wäre es sinnvoll 2 Prozesse zu haben, welche sich gegenseitig aufrufen, bzw. in dem eigentlichen updateProzess einen Timer aufzurufen, welcher den UpdateProzess erneut startet?
Code: Alles auswählen
def update_():
logging.info('doing update')
logging.debug('calling waiter')
threading.Timer(5.0,update_).start()
logging.debug('update finished')
logging.debug('Anzahl Threads: %d' % threading.activeCount())
update_()
Code: Alles auswählen
[INFO] (MainThread) doing update
[DEBUG] (MainThread) calling waiter
[INFO] (MainThread) update finished
[DEBUG] (MainThread) Anzahl Threads: 3
[INFO] (Thread-1 ) doing update
[DEBUG] (Thread-1 ) calling waiter
[INFO] (Thread-1 ) update finished
[DEBUG] (Thread-1 ) Anzahl Threads: 4
[INFO] (Thread-2 ) doing update
[DEBUG] (Thread-2 ) calling waiter
[INFO] (Thread-2 ) update finished
[DEBUG] (Thread-2 ) Anzahl Threads: 4
[INFO] (Thread-3 ) doing update
[DEBUG] (Thread-3 ) calling waiter
[INFO] (Thread-3 ) update finished
[DEBUG] (Thread-3 ) Anzahl Threads: 4
Gruß,
Steffen