Python Kill Thread

Python Kill Thread

Obwohl wir in Python keine Fäden töten können, gibt es einige Techniken, mit denen wir das Töten von Faden in Python simulieren können. Ein Faden in Python zu töten, wird plötzlich als schlechter Programmieransatz angesehen, da wir den Thread nicht direkt töten können. Stattdessen müssen wir eine der von Python bereitgestellten Methoden verwenden. Diese Methoden beenden die Fäden genau, sind jedoch ziemlich nahe am Prozess.

Erstellen eines Threads in Python

Wenn Sie ein Programm ausführen, ist ein Thread ein separater Ausführungsfluss, der im Hintergrund des Programms ausgeführt wird. Python -Threads sind eine Art Prozess, bei dem die Ausführung geplant ist. Ein Thread ist, um es einfach auszudrücken, ein Computerprozess, den ein Computer ausführt. Die Anweisungen eines Programms können getrennt von anderen Codes durchgeführt werden. Der Hintergrund -Thread kann in Python nicht ordnungsgemäß beendet werden, aber es gibt andere Techniken, die wir verwenden können, wenn wir den Thread noch beenden möchten. Diese Methoden beenden den Faden jedoch nicht richtig; Sie sind vielmehr nur sehr hilfreich dabei. Aber hier zeigen wir zuerst, wie man einen Thread startet, bevor wir Ihnen zeigen, wie Sie ihn stoppen können.

Lassen Sie uns den Code ausführen. Zuerst importieren wir die Bibliotheken "Zeit" und "Thread". In der folgenden Zeile definieren wir dann die Funktion „Func1“. In der folgenden Zeile verwenden wir eine für die Schleife, um die Variable „X“ zu starten und den Bereich für die Iterationen des Threads festzulegen. Hier setzen wir den Bereich von „1“ auf „10“, was bedeutet, dass unser Thread nach „10“ -Iterationen aufhört. In der folgenden Zeile nennen wir "Zeit.schlaf () “mit einem Zeitintervall von„ 1 “. Wir haben die Zeit benutzt.Sleep () ”Funktion, wenn wir die Ausführung einer Erklärung verzögern wollten.

Dann haben wir die Print () -Funktion in dieser Funktion aufgerufen. Wir haben die Variable „X“ übergeben, in der die Anzahl der Iterationen gespeichert wurde, und auch die Eingabeerklärung „abgeschlossene Iterationen vor dem Aufhören“ bestanden haben. Wenn wir die Zeit auf „1“ festlegen, wird das System für „1“ in den Schlafmodus gehen, bevor er die Druckanweisung druckt. In der folgenden Zeile nennen wir dann diese Funktion "func" mit dem "Thread" -Modul. Hier haben wir die Variable "T" initialisiert, um Thread darin zu speichern. Dann verwenden wir das „t.start () ”Funktion zum Starten des Threads. Und wir nennen die Funktion „join ()“ mit Thread Die Methode „Join ()“ setzt die Implementierung eines Programms aus, bis der Ziel -Thread vollständig gelesen wurde.

Sobald der Thread seine "10" -Iterationen abgeschlossen hat, wird das System seinen Betrieb für die „1“ -SCHEINEN PAUSE PAUSE, bevor er den Ausdruck „abgeschlossene Iterationen vor dem Aufhören“ druckt.„Wenn wir nun die Funktion mit Thread aufrufen, beginnt er die Ausführung des Threads, wie wir über der Schleife festgelegt sind und der Bereich„ 10 “lautet,„ 10 “.

Jetzt, da es alle seine Iterationen in der Ausgabe gezeigt hat, ist es hier unmöglich, den Thread hier zu töten. Wenn wir nach einer beliebigen Anzahl von Iterationen auf Strg-C klicken, wird der Thread weiter ausgeführt, bis alle Iterationen abgeschlossen sind. Dieser Thread versteht nur, dass er seine „10“ Iterationen beenden muss.

Verwenden von Daemon -Thread, um den Thread abzutöten

Jetzt können wir den Thread nicht mit dieser Methode abtöten. Wir können jedoch verhindern, dass der Thread diese Methode mithilfe dieser Methode beendet. Die Hintergrundfäden, die kontinuierlich Primär- oder Nicht-Dahemon-Threads durch Laufen im Vordergrund unterstützen, werden als Daemon-Threads bezeichnet. Der Dämon -Thread, der im Hintergrund ausgeführt wird.

Beginnen wir den Code, indem wir drei Bibliotheken importieren: "Threading" ist das erste, gefolgt von "Zeit" bzw. "SYS". Zahlreiche Methoden und Variablen im Python -SYS -Paket können verwendet werden, um verschiedene Komponenten des Python -Betriebssystems zu ändern. Die Arbeit am Dolmetscher wird durch die Zugänglichkeit zu Konstanten und Methoden ermöglicht, die eine enge Verbindung zum Dolmetscher haben. Nach der Erstellung einer Funktion mit dem Namen „Func“ verwendeten wir eine „während wahre“ Bedingung, um bedingt zu arbeiten, bis die Anweisung in der Schleife ausgeführt wurde.

In der nächsten Zeile haben wir dann die Funktion „print ()“ verwendet, um den Ausdruck „Thread aktiv zu drucken, verschwindet aber, wenn das Programm endet“, nachdem die Zeit „1“ Sekunden in die „Zeit.Sleep () ”Funktion. Wie wir "Zeit benutzten.Sleep () ”oben, um die Zeit auf„ 1 “Sekunden festzulegen. In der folgenden Zeile verwenden wir dann den Daemon und seine Eigenschaft zu „wahr“, damit wir unsere Fäden nach einer vorgegebenen Zeitspanne beenden können.

Derzeit generieren wir einen Thread mit „Threading.Thread ”und mit„ target = func “, um die Funktion im Thread aufzurufen. Jetzt, wo wir „t benutzt haben.Start () “Um unseren Thread zu starten, haben wir" Sys.exit (), “, was das System dazu veranlasst. In diesem Code wird also die Druckanweisung angezeigt, die in der Funktion „func“ gespeichert wurde, wenn der Thread sie aufruft, aber das Drucken der Anweisung durch „1“ Sekunden verzögert, weil wir "Zeit" verwendet haben.schlafen().”

Wie Sie sehen, läuft der Thread derzeit, aber als er seine achte Iteration abschließen sollte, haben wir Strg-C gedrückt, was sofort die Kündigung des Fadens beendete. Dies bedeutet im Wesentlichen, dass wir durch die Verwendung eines Daemon -Threads den Thread nicht tatsächlich töten konnten, nur um ihn daran zu hindern. Dies ist nicht der effizienteste Weg, um den Thread zu beenden. Stattdessen müssen wir die gesamte Operation beenden.

Da es nicht möglich ist, den Thread zum Ende zu zwingen, indem er ihn mit der Tastatur unterbricht, verwenden wir jetzt das Python -Ereignisobjekt im nächsten Skript. Dies führt dazu, dass der Thread selbst aufhört. Wir müssen keine Schlüssel treffen, um zu verhindern, dass es endet. Dieses Ereignisobjekt wird im Thread -Modul angeboten. Es hat zwei angegebene Methoden: set () und nicht set ().

Beginnen wir mit dem Implementieren des Code. Die nächste Zeile verwendet dann „Threading.Event () “, um das Ereignis des Threads aufzurufen. In der folgenden Zeile verwenden wir dann die Druckfunktion () und in der folgenden Zeile die Eingabeanweisung, indem wir das Argument „I von 20 Iterationen“ übergeben."Wir drucken den Wert von" I "in der Variablen" F ", die von" 20 "-Iterationen ausgeht. In der folgenden Zeile verwenden wir dann eine für die Schleife und innerhalb davon die Variable "I" und setzen den Bereich auf "1" auf "20". Dann haben wir den Zustand "if" verwendet, der wenn beendet wird.Fall.wird set () die Schleife bricht. Wir verwenden die Funktion print (), um die Anweisung zu drucken, die "Iterationen abgeschlossen ist. Wir haben den Zustand "If" verwendet, der wenn beendet wird .Fall.wird set () dann die Schleife brechen.

Als nächstes haben wir eine neue Funktion mit dem Namen "Signalhandler" erstellt, an den wir die Variablen "signum" und "rahmen" übergeben haben. Nach der Verwendung des Exit_Event.set () haben wir die Funktionen als "Signalhandler" mit Signal bezeichnet.Signal und Funktion "func" mit "Threading".Thread “, jeweils. Schließlich haben wir am Ende die Funktion join () verwendet, um die beiden Funktionen zu verbinden.

Wie Sie in der Ergebnisanzeige sehen können, setzen wir den Bereich auf „20“, was darauf hinweist. Dies zeigt an, dass der Thread nicht getötet wurde, sondern beendet wurde, was für die Präsentation von Vorteil ist.

Abschluss

In diesem Artikel haben wir diskutiert, wie man einen Thread in Python tötet. Wir stellten jedoch fest, dass wir zwar die Ausführung eines Threads nach einer bestimmten Anzahl von Iterationen stoppen können, aber keinen Thread in Python töten können. Wir haben zuerst einen Thread erstellt und dann einen Daemon -Thread verwendet, um ihn zu töten. Trotzdem fanden wir, dass wir während der Verwendung dieses Modul. Der Thread wird nach einer bestimmten Ausführung sofort gestoppt, als wir Python -Ereignisobjekte verwendeten, was hilfreich war.