Was ist Mutithreading in Python und wie wird es erreicht?

Erfahren Sie, was Multitasking in Python ist. Außerdem wird Multithreading erläutert, wie Sie Threads erstellen, ohne eine Klasse zu erstellen, indem Sie die Thread-Klasse erweitern und ohne sie zu erweitern.

Zeit ist der kritischste Faktor im Leben. Aufgrund seiner Bedeutung bietet die Welt der Programmierung verschiedene Tricks und Techniken, mit denen Sie den Zeitaufwand erheblich reduzieren und damit die Leistung steigern können. Ein solcher Ansatz ist Multithreading in Python, einem der wichtigsten Konzepte, die unter behandelt werden .

Hier ist eine kurze Zusammenfassung aller in diesem Artikel behandelten Hauptfächer:





Was ist Multitasking in Python?
Was ist ein Thread?
Was ist Multithreading in Python?
Wann sollte Multithreading in Python verwendet werden?
Wie erreicht man Multithreading in Python?
Wie erstelle ich Threads in Python?

Vorteile der Verwendung von Multithreading in Python



Lassen Sie uns zunächst versuchen, Multitasking zu verstehen, bevor wir uns mit Multithreading in Python befassen.

Was ist Multitasking in Python?

Multitasking ist im Allgemeinen die Fähigkeit, mehrere Aufgaben gleichzeitig auszuführen. In technischer Hinsicht bezieht sich Multitasking auf die Fähigkeit eines Betriebssystems, verschiedene Aufgaben gleichzeitig auszuführen. Beispielsweise Sie laden etwas auf Ihren PC herunter, hören Songs und spielen gleichzeitig ein Spiel usw. Alle diese Aufgaben werden von demselben Betriebssystem und synchron ausgeführt. Dies ist nichts anderes als Multitasking, mit dem Sie nicht nur Zeit sparen, sondern auch die Produktivität steigern können.

In einem Betriebssystem gibt es zwei Arten von Multitasking:



  • Prozessbasiert
  • Thread-basiert

In diesem Artikel erfahren Sie mehr darüber Thread-basiert Multitasking oder Multithreading .

Was ist ein Thread?

Thread-Multithreading in Python-EdurekaEin Thread ist im Grunde ein unabhängig Ablauf der Ausführung. Ein einzelner Prozess kann aus mehreren Threads bestehen. Jeder Thread in einem Programm führt eine bestimmte Aufgabe aus. Beispielsweise, Wenn Sie ein Spiel spielen, sagen wir FIFA auf Ihrem PC, ist das Spiel als Ganzes ein einziger Vorgang , Es besteht jedoch aus mehreren Threads, die für das Abspielen der Musik, die Eingabe durch den Benutzer, das synchrone Ausführen des Gegners usw. verantwortlich sind. All dies sind separate Threads, die für die Ausführung dieser verschiedenen Aufgaben im selben Programm verantwortlich sind.

Jeder Prozess hat einen Thread, der immer ausgeführt wird. Dies ist der Hauptfaden. Dieser Hauptthread erstellt tatsächlich die untergeordneten Threadobjekte. Der untergeordnete Thread wird auch vom Hauptthread initiiert. In diesem Artikel werde ich Ihnen alles weiter zeigen, wie Sie den aktuell laufenden Thread überprüfen.

c ++ Sortierarray in aufsteigender Reihenfolge

Ich hoffe, Sie haben damit klar verstanden, was ein Thread ist. Lassen Sie uns nun sehen, was Multithreading in Python ist.

Wann wird Multithreading in Python verwendet?

Multithreading ist sehr nützlich, um Zeit zu sparen und die Leistung zu verbessern, kann jedoch nicht überall angewendet werden.
Im vorherigen FIFA-Beispiel ist der Musik-Thread unabhängig von dem Thread, der Ihre Eingabe entgegennimmt, und der Thread, der Ihre Eingabe entgegennimmt, ist unabhängig von dem Thread, der Ihren Gegner ausführt. Diese Threads werden unabhängig voneinander ausgeführt, da sie nicht voneinander abhängig sind.

Daher kann Multithreading nur verwendet werden, wenn die Abhängigkeit zwischen einzelnen Threads nicht besteht.

Dieser Artikel zeigt weiter, wie Sie Multithreading in Python erreichen können.

Wie erreicht man Multithreading in Python?

Multithreading in Python kann durch Importieren von erreicht werden Einfädeln Modul.

Bevor Sie dieses Modul importieren, müssen Sie es installieren. Führen Sie den folgenden Befehl an Ihrer Anaconda-Eingabeaufforderung aus, um dies in Ihrer Anaconda-Umgebung zu installieren:

conda install -c conda-forge tbb

Nach der erfolgreichen Installation können Sie das Threading-Modul mit einem der folgenden Befehle importieren:

Threading aus Threading importieren import *

Nachdem Sie das Threading-Modul installiert haben, können Sie mit dem Multithreading in Python fortfahren.

Wie erstelle ich Threads in Python?


Threads in Python können auf drei Arten erstellt werden:

  1. Ohne eine Klasse zu erstellen
  2. Durch Erweitern der Thread-Klasse
  3. Ohne Thread-Klasse zu erweitern

Ohne eine Klasse zu erstellen

Multithreading in Python kann auch ohne Erstellen einer Klasse durchgeführt werden. Hier ist ein Beispiel, um dasselbe zu demonstrieren:

Beispiel:

aus Threading importieren * print (current_thread (). getName ()) def mt (): print ('Child Thread') child = Thread (Ziel = mt) child.start () print ('Thread-Namen ausführen:', current_thread () ) .getName ())

Ausgabe:

Untergeordneter MainThread-Thread Ausführender Threadname: MainThread

Die obige Ausgabe zeigt, dass der erste vorhandene Thread der Haupt-Thread ist. Dieser Hauptthread erstellt dann einen untergeordneten Thread, der die Funktion ausführt, und dann wird die endgültige Druckanweisung erneut vom Hauptthread ausgeführt.

Lassen Sie uns nun fortfahren und sehen, wie Multithreading in Python ausgeführt wird, indem die Thread-Klasse erweitert wird.

Durch Erweitern der Thread-Klasse:

Wenn eine untergeordnete Klasse durch Erweitern der Thread-Klasse erstellt wird, repräsentiert die untergeordnete Klasse, dass ein neuer Thread eine Aufgabe ausführt. Beim Erweitern der Thread-Klasse kann die untergeordnete Klasse nur zwei Methoden überschreiben, d. H. Die Methode __init __ () und die Methode run (). Keine andere Methode als diese beiden Methoden kann überschrieben werden.

Hier ist ein Beispiel für das Erweitern der Thread-Klasse zum Erstellen eines Threads:

Beispiel:

Threading importieren Zeitklasse importieren mythread (threading.Thread): def run (self): für x im Bereich (7): print ('Hi from child') a = mythread () a.start () a.join () print ('Bye from', current_thread (). GetName ())

Ausgabe:
Hallo vom Kind
Hallo vom Kind
Hallo vom Kind
Hallo vom Kind
Hallo vom Kind
Hallo vom Kind
Hallo vom Kind
Tschüss von MainThread

Das obige Beispiel zeigt, dass die Klasse myclass die Thread-Klasse und die untergeordnete Klasse erbt, d. H. Myclass überschreibt die Ausführungsmethode. Standardmäßig muss der erste Parameter einer Klassenfunktion self sein, der der Zeiger auf das aktuelle Objekt ist. Die Ausgabe zeigt, dass der untergeordnete Thread die run () -Methode ausführt und der Hauptthread auf den Abschluss der untergeordneten Ausführung wartet. Dies liegt an der Funktion join (), mit der der Hauptthread darauf wartet, dass das untergeordnete Element beendet wird.

Diese Methode zum Erstellen von Threads ist die am meisten bevorzugte Methode, da sie die Standardmethode ist. Wenn Sie jedoch Threads erstellen möchten, ohne die Thread-Klasse zu erben oder zu erweitern, können Sie dies auf folgende Weise tun.

Ohne Thread-Klasse zu erweitern

Um einen Thread zu erstellen, ohne die Thread-Klasse zu erweitern, haben Sie folgende Möglichkeiten:
Beispiel:

aus Threading importieren * Klasse ex: def myfunc (self): #self als erster Parameter in einer Klasse func für x in Bereich (7) erforderlich: print ('Child') myobj = ex () thread1 = Thread (target = myobj. myfunc) thread1.start () thread1.join () print ('done')

Ausgabe:

Kind
Kind
Kind
Kind
Kind
Kind
Kind
erledigt

Der untergeordnete Thread führt myfunc aus, wonach der Hauptthread die letzte Druckanweisung ausführt.

Vorteile der Verwendung von Gewinde

Multithreading hat viele Vorteile, von denen einige wie folgt sind:

  • Bessere Ressourcennutzung
  • Vereinfacht den Code
  • Ermöglicht das gleichzeitige und parallele Auftreten verschiedener Aufgaben
  • Reduziert den Zeitaufwand oder die Reaktionszeit und erhöht dadurch die Leistung.

Hier ist ein Beispiel, um zu überprüfen, wie lange es dauert, bis ein Code mit und ohne Multithreading in Python ausgeführt wird:

 Beispiel: 
Importzeit def sqr (n): für x in n: time.sleep (1) x% 2 def cube (n): für x in n: time.sleep (1) x% 3 n = [1,2,3 , 4,5,6,7,8] s = time.time () sqr (n) cube (n) e = time.time () print (es)

Ausgabe:

16.042309284210205

Das Obige ist die Ausgabezeit, die benötigt wird, um das Programm ohne Verwendung von Threads auszuführen. Lassen Sie uns nun Threads verwenden und sehen, was mit demselben Programm passiert:

Beispiel:

Threading aus Threading importieren Import * Importzeit def sqr (n): für x in n: time.sleep (1) print ('Rest nach Division durch 2', x% 2) def cube (n): für x in n: time.sleep (1) print ('Rest nach Division durch 3', x% 3) n = [1,2,3,4,5,6,7,8] start = time.time () t1 = Thread ( target = sqr, args = (n,)) t2 = Thread (target = cube, args = (n,)) t1.start () time.sleep (1) t2.start () t1.join () t2.join () end = time.time () print (Ende-Start)
Ausgabe: 9.040220737457275

Die obige Ausgabe zeigt deutlich, dass die Zeit, die für die Verwendung von Threads benötigt wird, viel geringer ist als die Zeit, die dasselbe Programm benötigt, um ohne Verwendung von Threads ausgeführt zu werden.

Ich hoffe, Sie sind mit den in diesem Artikel behandelten Konzepten im Zusammenhang mit Multithreading in Python klar. Stellen Sie sicher, dass Sie so viel wie möglich üben, da dies eines der wichtigsten Konzepte für die Programmierung ist.

Hast du eine Frage an uns? Bitte erwähnen Sie es im Kommentarbereich dieses Blogs „Multithreading in Python“ und wir werden melde dich so schnell wie möglich bei dir.

Um detaillierte Informationen zu Python und seinen verschiedenen Anwendungen zu erhalten, können Sie sich live anmelden mit 24/7 Support und lebenslangem Zugriff.