Wie implementiere ich Multiprocessing am besten in Python?



Dieser Artikel führt Sie in die Multiprocessing-Funktion in Python ein und bietet Ihnen im Verlauf eine programmatische Demonstration.

2019 war ein sehr großes Jahr für die technologische Entwicklung auf der ganzen Welt. Von Computerherstellern, die ihren CPUs und Prozessoren mehr Kerne hinzufügen, bis hin zur Einführung intelligenterer Chips in Mobiltelefonen, ist Multiprocessing kein Traum mehr. Heute ist eine der bekanntesten Programmiersprachen, die Multiprocessing unterstützt, . Dank der Einführung der Parallelverarbeitungsleistung in seiner Version können Codierer auf der ganzen Welt jetzt nahtlos Codes erstellen, die gleichzeitig ausgeführt werden können, und damit ihre Laufzeit um einen erheblichen Betrag.

Die folgenden Hinweise werden in diesem Artikel behandelt:





Keyerror: 'a'

Lasst uns anfangen,

Multiprocessing in Python

Was ist Multiprocessing?

Multiprocessing kann einfach als die Fähigkeit eines Systems definiert werden, mehr als eine Operation in einer bestimmten Instanz zu unterstützen. Dies bedeutet, dass Anwendungen in Mehrprozessorsystemen in kleine Teile zerlegt und dann unabhängig voneinander ausgeführt werden, um die Effizienz zu erhöhen und die Gesamtlaufzeit zu verkürzen. Der Prozessor im System weist jedem kleinen Stück einen eigenen Thread zu, sodass es als eigenständige Einheit fungieren kann.



Die Notwendigkeit der Mehrfachverarbeitung

Stellen Sie sich ein Computersystem vor, dessen Prozessor nur einen Kern enthält. Wenn diesem einzelnen Kern mehrere Aufgaben zugewiesen sind, hat er jede Aufgabe dazwischen unterbrochen und wechselt dann zur nächsten. Dies erhöht nicht die Zeit, die zum Ausführen jeder Aufgabe benötigt wird, sondern verringert auch die Gesamteffizienz des Systems.

Auf der anderen Seite kann ein Multiprozessor-Computer einen Prozessor haben, der wiederum mehrere funktionierende Einheiten enthält, sogenannte Einzelkerne, die mehrere verschiedene Aufgaben gleichzeitig unabhängig ausführen können. Dies erhöht nicht nur die Effizienz des Systems, sondern reduziert auf lange Sicht auch die Laufzeit des Systems um einen erheblichen Betrag.



Es gibt zwei Arten von Multiprocessing-Systemen in Python.

Multiprozessorsystem

Dieses System verfügt grundsätzlich über mehrere Prozessoren, von denen jeder jeweils eine Aufgabe ausführen und als unabhängige Komponente fungieren kann.

Multi-Core-Prozessorsystem

Dieses System verfügt über mehrere Kerne im selben Prozessor, in denen der Kern als separate Einheit fungiert und die ihm zugewiesenen Aufgaben unabhängig voneinander ausführt.

Code für die Mehrfachverarbeitung in Python

Nachdem Sie sich an das Grundkonzept der Mehrfachverarbeitung gewöhnt haben, wollen wir untersuchen, wie die Mehrfachverarbeitung in Python erreicht werden kann.

In Python enthält der Interpreter eine sehr einfache und intuitive API, die eine einzelne Aufgabe übernimmt, sie in mehrere Komponenten aufteilt und diese unabhängig voneinander verarbeitet.

Schauen Sie sich das folgende Programmmodul an, um dieses Konzept der Multiprocessing in Python besser zu verstehen.

Beispiel 1

# Importieren des Multiprocessing-Moduls Importieren der Multiprocessing-Funktion def print_cube (num): '' 'Funktion zum Drucken eines Würfels mit der angegebenen Anzahl' '' print ('Cube: {}'. Format (num * num * num)) def print_square (num): '' 'Funktion zum Drucken eines Quadrats mit der angegebenen Anzahl' '' print ('Quadrat: {}'. Format (num * num)) wenn __name__ == '__main__': # Prozesse erstellen p1 = multiprocessing.Process (target = print_square, args = (10,)) p2 = Multiprocessing.Process (target = print_cube, args = (10,)) # Startprozess 1 p1.start () # Startprozess 2 p2.start () # Warten, bis Prozess 1 abgeschlossen ist p1 .join () # warten bis Prozess 2 abgeschlossen ist p2.join () # beide Prozesse beendet den Druckvorgang ('Fertig!')

Ausgabe

Quadrat: 100

Würfel: 1000

Erledigt!

Lassen Sie uns nun dieses Programm analysieren, um es besser zu verstehen.

  1. Der erste Schritt besteht darin, das Multiprozessor-Modul zu importieren. Verwenden Sie dazu die folgende Syntax: Import Multiprocessing.

  2. Nachdem das Multiprozessor-Modul importiert wurde, können Sie fortfahren und einen Prozess erstellen. Dazu erstellen wir ein Objekt der Process-Klasse und weisen ihm die folgenden Argumente zu. Ziel: Die Funktion, die von diesem Prozess ausgeführt werden muss, und Argumente: Die Argumente, die an die Zielfunktion übergeben werden müssen.

Hinweis: Ein Prozesskonstruktor kann sowohl mehrere Ziele als auch Argumente annehmen. Im obigen Beispiel haben wir unserem Prozess jedoch nur zwei Ziele und Argumente zugewiesen, wie unten gezeigt.

p1 = multiprocessing.Process (target = print_square, args = (10,))

p2 = multiprocessing.Process (target = print_cube, args = (10,))

  1. Nachdem der Prozess erstellt wurde, schreiben wir die Syntax zum Starten desselben.

p1.start ()

p2.start ()

print_r to string

Sobald der Prozess gestartet ist, werden das aktuelle und das bereits ausgeführte Programm gleichzeitig ausgeführt. Wenn Sie in einer bestimmten Situation die Ausführung des aktuellen Programms stoppen und sich nur auf die Ausführung des bereits vorhandenen Programms konzentrieren müssen, verwenden wir die unten gezeigte Verknüpfungsfunktion.

p1.join ()

p2.join ()

Sobald Sie diese Syntax eingegeben haben, wartet der Interpreter, bis das Programm p1 die Ausführung beendet hat, und fährt dann mit dem Programm p2 fort.

Um dieses Konzept besser zu verstehen, sehen Sie sich unten ein weiteres Beispiel für Multiprocessing In Python an.

Beispiel 2

# Importieren des Multiprocessing-Moduls Importieren des Multiprocessing-Imports OS Def Worker1 (): # Druckprozess-ID-Druck ('ID des Prozesses, auf dem Worker1 ausgeführt wird: {}'. Format (os.getpid ())) Def Worker2 (): # Druckprozess-ID-Druck ('ID des Prozesses, auf dem worker2 ausgeführt wird: {}'. Format (os.getpid ())) if __name__ == '__main__': # Drucken der Hauptprogrammprozess-ID print ('ID des Hauptprozesses: {}'. Format (os .getpid ())) # Erstellen von Prozessen p1 = Multiprocessing.Process (Ziel = Worker1) p2 = Multiprocessing.Process (Ziel = Worker2) # Starten von Prozessen p1.start () p2.start () # Prozess-IDs print ('ID of Prozess p1: {} '. Format (p1.pid)) print (' ID des Prozesses p2: {} '. Format (p2.pid)) # Warten Sie, bis die Prozesse abgeschlossen sind. p1.join () p2.join () # beide Prozesse haben den Druck beendet ('Beide Prozesse haben die Ausführung beendet!') # Überprüfen Sie, ob die Prozesse aktiv sind. Drucken ('Prozess p1 ist aktiv: {}'. Format (p1.is_alive ())) print ('Prozess p2 ist aktiv: {} '.format (p2.is_alive ()))

Ausgabe

ID des Hauptprozesses: 18938

ID des Prozesses, auf dem Worker1 ausgeführt wird: 18939

ID des Prozesses, auf dem worker2 ausgeführt wird: 18940

ID des Prozesses p1: 18939

ID des Prozesses p2: 18940

Beide Prozesse haben die Ausführung beendet!

Prozess p1 lebt: Falsch

Prozess p2 lebt: Falsch

Beachten Sie im obigen Programm, dass beide Prozesse p1 und p2 unabhängig von ihren individuellen Speichern ausgeführt werden. Sobald beide die Ausführung beendet haben, wird das Programm beendet.

Dies bringt uns zum Ende dieses Artikels über Multiprocessing in Python

Sie können sich eingehend mit Python und seinen verschiedenen Anwendungen vertraut machen für Live-Online-Schulungen mit 24-Stunden-Support und lebenslangem Zugriff.

Hast du eine Frage an uns? Erwähnen Sie sie im Kommentarbereich des Artikels und wir werden uns bei Ihnen melden.