gleich zu meinem problem.
Ich möchte ein Programm schreiben welches in der Lage ist threads zu starten und diese fals sie abstürzen neuzustarten. Desweiteren soll der user in der Lage sein über eien Tastaureingabe das Programm anzuweisen bestimmte threads zu beenden und nicht mehr zu starten und wieder zu ändern
Der Teil des Programms der die Threads startet und neustarted funktioniert schon.
Bloß weiß ich nicht wie ich einen thread nach benutzereingabe beenden kann.
Code: Alles auswählen
class management (object):
def __init__(self):
self._threadNames = {"server0" : ["serverTCP", "0"], "server1" : ["serverTime" ,"0"], "server2": ["serverM", "0"]}
def main (self):
while(1):
for i in range(len(self._threadNames)):
exist = 0
for t in threading.enumerate():
if self._threadNames["server"+str(i)][0] == t.name:
exist = 1
time.sleep(1.0)
if exist == 0 and self._threadNames["server"+str(i)][1] == "0":
thd = Thread(target = getattr(main, self._threadNames["server"+str(i)][0]), name = self._threadNames["server"+str(i)][0])
thd.start()
if exist == 1 and self._threadNames["server"+str(i)][1] == "1":
print("stop")
thd = Thread(target = getattr(main, self._threadNames["server"+str(i)][0]), name = self._threadNames["server"+str(i)][0])
thd._stop()
th = threading.enumerate()
print(th)
time.sleep(2.0)
def serverTCP (self):
while(1):
print("Ich laufe serverTCP")
time.sleep(5.0)
def serverTime (self):
while(1):
print("Ich laufe serverTime")
time.sleep(5.0)
def serverM (self):
#while(1):
print(self._threadNames)
print("Schreibe server0, server1, server2 um die Threads zu beenden oder zu starten")
eingabe = input("Eingabe >>>")
time.sleep(5.0)
if eingabe == "server0":
if self._threadNames["server0"][1] == "0":
self._threadNames["server0"][1] = 1
else:
self._threadNames["server0"][1] = 0
if eingabe == "server1":
if self._threadNames["server1"][1] == "0":
self._threadNames["server1"][1] = 1
else:
self._threadNames["server1"][1] = 0
if eingabe == "server2":
if self._threadNames["server2"][1] == "0":
self._threadNames["server2"][1] = 1
else:
self._threadNames["server2"][1] = 0
else:
print("False input")
main = management()
main.main()
Mit freundlichen Grüßen
Fabi