Threadpoolexecutor Python

Threadpoolexecutor Python
Threadpoolexecutor ist eine Python -Klasse, die in seinem Paket mit dem Namen „Concurrent.Futures “. Angenommen, wir mussten viele Fäden in unsere hoch parallelisierten Jobs machen. Es ist am kostspieligsten, da es aufgrund so viel mehr Prozesse mehrere Effizienzprobleme geben kann. Ein großes Problem könnte sein, dass der Durchsatz eingeschränkt wird. Sie können dieses Problem überwinden, indem Sie einen Threadpool erstellen. Ein Thread-Pool ist eine Sammlung vorinstantierter oder inaktiver Prozesse, die darauf warten, zugewiesene Arbeiten zu erhalten. Wenn eine erhebliche Reihe von Aktivitäten abgeschlossen sein muss, wird in der Regel empfohlen, einen Thread -Pool zu erstellen, um neue Prozesse für jeden Job zu entwickeln. Ein Thread -Pool kann die folgenden Aufgaben ausführen:
  • Sobald ein Vorgang in einem Thread -Pool seine Verarbeitung abgeschlossen hat, könnte er erneut verwendet werden.
  • Wenn ein Faden beendet ist, wird ein neuer Thread gebildet, um seinen Platz einzunehmen.

Die gleichzeitige.Futures -Paket ist ein Teil der regulären Bibliothek Python. In Python 3.2, dieses Paket wurde erstellt, um den Programmierern eine erhöhte Schnittstelle zum Initiieren von gleichzeitigen Prozessen zu geben. Das ist ein mittlerer Ebene, der auf Pythons Multitasking sowie Multiprozessing -Pakete erstellt wurde, mit denen Sie Aufgaben mit einem Pool von Fäden oder Verfahren ausführen können. In diesem Artikel werden wir uns die Thread Pool Executor -Klasse und seine Funktionen ansehen.

Beispiel 01:

Schauen wir uns den Thread Pool Executor -Kurs in unserem Python -Code an. Erstens haben wir das „gleichzeitige gleichzeitig.Futures ”-Paket mit dem Schlüsselwort" From "in der ersten Zeile, um die Klasse" ThreadPoolexecutor "im Code zu importieren. Danach haben wir eine Liste von 4 Zahlen initialisiert. Die erste Funktion ist eine benutzerdefinierte Funktion namens "Square" und wird ein Quadrat eines Werts berechnen, der in seinen Argumenten übergeben wurde. Die andere Methode ist die Konstruktorfunktion i.e., Main () Methode, wenn die Ausführung von i beginnt. Die benutzerdefinierte Funktion „Quadrat“ wird also mit dem Schlüsselwort „def“ definiert und nimmt den Argumentwert, um das Quadrat zu berechnen.

In den Klammern "" wird der numerische Wert einer Variablen "z" verwendet, anstatt "z" hier als Zeichenfolge zu nehmen. Das „F“ -Scharakter vor der Anweisung Text und Berechnung zeigt, dass die Werte als Schwimmer genommen werden und ihr Quadrat berechnet wird. Die Druckanweisung verwendet dieses Format, um ein Quadrat zu erhalten und es in der Spyder3 -Ausgangshell zu drucken. Jetzt kommt der Main () -Funktionskonstruktor. Der Konstruktor initialisiert eine leere Liste mit dem Namen "Val". Es ist Zeit, die ThreadPoolexecutor -Klasse zu verwenden, um einen Pool von 5 Threads zu erstellen, die asynchron verwendet werden können.

Verwenden Sie dafür die Anweisung "mit" mit dem Namen "Threadpoolexecutor" ein Argument "max_worker" mit Wert 5. Sie können es als Schleife sehen, die jedes Mal 1 Wert nimmt. Die Funktion der ThreadPoolexecutor -Klasse sendet eine Funktion I.e., "Quadrat" und ergibt ein Quadrat einer Zahl, die an sie übergeben wurde. Die Nummer 1 als Startwert für die Quadratmethode und danach werden die Werte aus der Liste „L“ übernommen. Die Funktion „MAP“ wird hier verwendet, um die Funktion schnell zu übersetzen und gemeinsam iterable als eins und erhöht einen Fehler im „gleichzeitigen.Futures ”-Paket. Die Ausnahme wird in der Variablen „Val“ gespeichert und die Druckanweisung wird verwendet, um diese Ausnahme anzuzeigen, die in der Schleife „für“ auf dem Ausgangsbildschirm verwendet wird.

von gleichzeitig.Futures importieren threadpoolexecutor
L = [2,3,4,5]
Def Square (Z):
print (f'Square von z: z*z ')
Wenn __name__ == '__main__':
val = []
mit ThreadPoolexecutor (max_workers = 5) als exe:
exe.Senden (Quadrat, 1)
val = exe.Karte (Quadrat, l)
für res in val:
Druck (res)

Der Pool von 5 Threads wurde erstellt, um ein Quadrat von 5 Werten ab 1 bis 5 zu berechnen, wie in der Ausgabe angezeigt.

Beispiel 02:

Hier kommt das letzte Beispiel für die Verwendung der ThreadPoolexecutor -Klasse in Python Code. Wir haben diese neuen Beispiele mit dem Import einer Klasse mit ihrem Paket „gleichzeitlich.Futures “. Initialisieren Sie dann eine Variable „Summe“ mit 0 Wert. Die benutzerdefinierte Funktion mit dem Namen "Process" wird deklariert, um ein Argument "N" in sie zu nehmen. Diese Funktion druckt die Threadnummern über die Druckanweisung. Die Threadnummer wird mit der Nummer 5 zusammengefasst, die der Variablen „Summe“ hinzugefügt wurde. Diese berechnete Summe für jeden Thread wird in der Ausgabe der Druckanweisung angezeigt. Die Definition der Hauptmethode wurde hier gestartet. Es wird mit dem ThreadPoolexecutor zur Erstellung eines Pools von 3 Threads verwendet. Die Funktion „Prozess“ wurde dreimal mit der Funktion „Senden“ für 3 verschiedene Werte bezeichnet. Nachdem alle Threads der Prozessmethode ausgeführt wurden, wird die Abschlussmeldung angezeigt. Die main () Funktionserklärung wird danach verwendet.

von gleichzeitig.Futures importieren threadpoolexecutor
Sum = 0
Def Process (n):
print ("Verarbeitung des Threads: ".Format (n))
Sum = n + 5
print ("Summe von und 5 ist:".Format (n), sum)
Def Main ():
print ("ThreadPoolexecutor starten")
mit ThreadPoolexecutor (max_workers = 3) als Ex:
val = ex.reichen (Prozess, (2))
val = ex.reichen (Prozess, (4))
val = ex.reichen (Prozess, (5))
drucken ("Alle Threads werden vollständig verarbeitet"))
Wenn __name__ == '__main__':
hauptsächlich()

Die Ausführung zeigt, dass der Pool gestartet wird und jede Threadnummer mit ihrer Summe mit Nummer 5 angezeigt wird.

Abschluss:

Wir haben die ThreadPoolexecutor -Klasse und alle möglicherweise verwendeten Funktionen in unseren Beispielen behandelt und besprochen. Wir sollten es für unsere Benutzer so unprätentiös machen wie wahrscheinlich. Wir haben uns auch eine Karte angesehen und die Funktion einreichen. Wir erwarten die beste Antwort.