2017-08-14 3 views
0

Ich habe eine harte harte Zeit mit Timer Funktion von Threading.Threading.Timer (5, Funktion) Start alle 5 Sekunden

Grundsätzlich, wenn mein Programm startet, möchte ich Statistiken alle x Sekunde protokollieren.

Also dachte ich, ich könnte es mit der Timer Funktion (Start-Funktion alle 5 Sekunden) tun.

Vorerst ich tat:

from threading import Timer 
def startLogger(): 
    while True: 
     t = Timer(5, function) 
     t.start() 


def function(): 
    print("hey") 

Aber es Fehler starten, so dass ich denke, es ist nicht die gute Art und Weise, es zu tun.

RuntimeError: can't start new thread

Wenn mir jemand einen Hinweis geben kann, würde es geschätzt!

Antwort

1

Sie können Folgendes versuchen. Die Idee ist, dass Sie den nächsten Funktionsaufruf nur am Ende des Körpers dieser Funktion einplanen:

2

Anstatt alle fünf Sekunden einen neuen Thread zu starten, können Sie nur einen Thread erstellen und den gesamten Code von dort ausführen.

from time import sleep 
from threading import Thread 

def startLogger(): 
    while True: 
     function() 
     sleep(5) 

def function(): 
    print("hey") 

Thread(target=startLogger).start() 

startLogger wird kontinuierlich ausgeführt. Es wird function anrufen, dann für 5 Sekunden pausieren, dann neu starten, function anrufen und so weiter.

Es geht in einem eigenen Thread, so dass die sleep(5) nicht auch Ihren Hauptfaden für 5 Sekunden stoppt.

Verwandte Themen