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.
Ich habe folgendes Problem: Ich möchte eine Endlosschleife durch eine Benutzereingabe von Außen zu einem beliebigen Zeitpunkt terminieren. Also z.B. wenn der Benutzer "q" für quit eingibt. Das ganze soll für eine beliebige Anzahl an Threads funktionieren.
Ich habe es erst mit raw_input() probiert. Da ist allerdings dann das Problem, dass er bei raw_input() wartet, bis der Benutzer etwas eingibt. Die Aktionen in der Endlosschleife sollen aber SOLANGE laufen, bis der Benutzer "q" eingibt. Hat jemand eine Idee?
import threading
import time
class ThreadClass(threading.Thread):
'''
Class ThreadClass derived from threading.Thread.
'''
def __init__(self):
'''
Constructor of class ThreadClass.
'''
# Initialisieren als Instanz der Klasse Thread
threading.Thread.__init__(self)
def run(self):
'''
Run method.
'''
while True:
userInput = raw_input("> ")
if userInput == "q":
break
print "Do something."
# warte eine Sekunde
time.sleep(1)
# Instanziieren und starten eines Threads
firstThread = ThreadClass()
firstThread.start()
In dem Beispiel kann man sich die ganze Klasse sparen und einfach nur den Inhalt von `run()` in eine Funktion packen, die in einem `Thread` ausgeführt wird.
Und vor allem kann man sich sämtliche "docstrings" sparen die einfach nur das offensichtliche *nochmal* sagen. Mehrwert == Null. Gilt im Grunde auch für die Kommentare.
Die Endlosschleife könnte man übrigens auch so schreiben:
Ok, ich sehe, ich habe die Frage, falsch formuliert. Was ich eigentlich suche, ist eine Alternative zu raw_input(), die nicht die Console benötigt. Also etwas vergleichbar mit Hot_Keys. Sowas wie "ALT+F4" für die Python Anwendung.
Aber ist letztendlich auch nicht so wichtig...
Das in dem Beispiel einiges unnötig bzw. überflüssig erscheint, ist mir auch klar. Das ist auch stark gekürzt und vereinfacht. Anscheinend nicht stark genug...[/quote]