Wie kann ich töten alle threads?

In diesem Skript:

import threading, socket    

class send(threading.Thread):

    def run(self):
        try:
            while True:
                try:
                    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    s.connect((url,port))
                    s.send(b"Hello world!")
                    print ("Request Sent!")
                except:
                    s.close()
        except KeyboardInterrupt:
            # here i'd like to kill all threads if possible

for x in range(800):
    send().start()  

Ist es möglich, zu töten alle Fäden in der außer KeyboardInterrupt? Ich habe gesucht im Netz und ja, ich weiß, es wurde schon gefragt, aber ich bin wirklich neu in python und ich habe nicht so gut die Methode, die dieser Frage auf stack.

  • Sie wollen, um zu töten alle threads... tut dies auch die Haupt-thread und als Konsequenz der Anwendung? Wenn ja, einfach machen, alle deine threads Dämonen und dann, wenn Sie beenden möchten, verwenden Sie sys.exit().
  • Das hilft nicht, wenn die KeyboardInterrupt geliefert wird, zu einem der threads (der thread, der ihn empfängt, ist im Grunde zufällig IIRC). Damit die Notwendigkeit für die Alarmierung der Haupt-thread also kann es exit zu der entsprechenden Zeit.
  • Recht @ShadowRanger, danke für den Hinweis it out, Gewinde neigen dazu, zu schlucken Ausnahmen. Als Hinweis, wenn ich den Umgang mit threads, die ich in der umgekehrten Ansatz: in einem thread die Schleife, wenn eine Taste gedrückt wurde (die Logik erweitert werden kann, basierend auf Schlüssel), Ende es.
  • No way ! Socket Außengewinde. Legen Sie ein Zeitlimit für das automatische töten. Wie behandeln *socket.error? while True ist schlechte Idee, while some_status_bolean besser !
InformationsquelleAutor Sperly1987 | 2016-09-08
Schreibe einen Kommentar