Im folgenden Beispiel druckt der Timer alle 5 Sekunden weiter hello world
und hört niemals auf, wie kann ich den Timer-Thread als Timer verwenden (Drucken von "Hallo Welt"), aber auch nicht den Fortschritt des Programms stoppen?Python: Wie vermeidet man ein "Warten" in einem Thread, der den Fluss des Programms stoppt?
import threading
class Timer_Class(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.event = threading.Event()
self.running = True
def run(self, timer_wait, my_fun, print_text):
while self.running:
my_fun(print_text)
self.event.wait(timer_wait)
def stop(self):
self.running = False
def print_something(text_to_print):
print(text_to_print)
timr = Timer_Class()
timr.run(5, print_something, 'hello world')
timr.stop() # How can I get the program to execute this line?
Hallo der Code oben wurde von einer Stackoveflow-Frage https://Stackoverflow.com/a/9812806/157416 angenommen, die eine hohe Abstimmung zu haben scheint. Ich weiß, dass der Code eine Schleife erzeugt, die das gewünschte Ergebnis ist, aber durch Threading versuche ich, die Schleife vom Haupt-Thread zu trennen. Das OP fragt nach Möglichkeiten, dies zu erreichen. Ich werde mir den von Ihnen bereitgestellten Link ansehen. Aber deine Antwort beschreibt nur, was ich bisher schon weiß. Danke – Mohammad
Und Sie verpassten den Aufruf ** start() **, der im Beispielcode vorhanden ist. Also von diesem Standpunkt aus: einfach einen Schritt zurück und überlegen, ob meine Antwort Ihr Problem gelöst hat, wenn ja, denken Sie freundlich über das Akzeptieren. Oder lassen Sie mich wissen, was fehlt, um dorthin zu gelangen. – GhostCat
Ok, ich werde in den Start() Anruf schauen danke. – Mohammad