Arbeiten mit Prozessen
Swipe um das Menü anzuzeigen
Das multiprocessing-Modul von Python ermöglicht echte Parallelität, indem separate Prozesse erzeugt werden, von denen jeder über einen eigenen Python-Interpreter und eigenen Speicherbereich verfügt. Im Gegensatz zu Threads, die sich den Speicher teilen und im selben Prozess laufen, sind Prozesse vollständig voneinander isoliert. Diese Isolierung umgeht die Einschränkung durch den Global Interpreter Lock (GIL) und erlaubt es mehreren CPU-Kernen, parallel an CPU-intensiven Aufgaben zu arbeiten. Nach dem Ansehen des obigen Videos sollte klar sein, dass prozessbasierte Parallelität besonders nützlich ist, wenn umfangreiche Berechnungen durchgeführt werden müssen oder mehrere Kerne für Aufgaben genutzt werden sollen, die sonst durch den GIL ausgebremst würden. Das multiprocessing-Modul bietet eine vertraute API, die der des threading-Moduls ähnelt, sodass ein Wechsel zwischen Threading und Processing je nach Bedarf einfach möglich ist.
Diese Klassen und Funktionen dienen zum Aufbau robuster paralleler Anwendungen, zur Verwaltung der Datenfreigabe und zur Koordination der Prozessa usführung in Python.
123456789101112131415import multiprocessing import time def print_message(message, delay): time.sleep(delay) print(message) process1 = multiprocessing.Process(target=print_message, args=("Process 1 finished", 2)) process2 = multiprocessing.Process(target=print_message, args=("Process 2 finished", 1)) process1.start() process2.start() process1.join() process2.join()
Dieses Codebeispiel zeigt, wie das multiprocessing-Modul von Python verwendet wird, um Aufgaben parallel durch das Erstellen separater Prozesse auszuführen. Das Beispiel nutzt einfache Zeitverzögerungen und gibt Nachrichten aus, um zu verdeutlichen, wie Prozesse unabhängig und gleichzeitig ausgeführt werden können.
Wichtige Konzepte im Überblick
-
Prozesserstellung:
- Neue Prozesse werden mit der Klasse
multiprocessing.Processerstellt; - Jedem Prozess wird eine Zielfunktion (
print_message) und Argumente für diese Funktion übergeben.
- Neue Prozesse werden mit der Klasse
-
Prozessstart:
- Die Methode
start()startet jeden Prozess, sodass sie gleichzeitig ausgeführt werden können; - Nach dem Start läuft jeder Prozess unabhängig von den anderen seine Zielfunktion ab.
- Die Methode
-
Parallele Ausführung:
- Beide Prozesse schlafen für unterschiedliche Zeitspannen (
2und1Sekunden) mittime.sleep(); - Da sie parallel laufen, beendet der Prozess mit der kürzeren Verzögerung seine Aufgabe zuerst, auch wenn er später gestartet wurde.
- Beide Prozesse schlafen für unterschiedliche Zeitspannen (
-
Prozesszusammenführung:
- Die Methode
join()stellt sicher, dass das Hauptprogramm auf das Ende beider Prozesse wartet, bevor es fortfährt; - Ohne
join()könnte das Hauptprogramm beendet werden, bevor die Prozesse abgeschlossen sind.
- Die Methode
Dieses Beispiel zeigt, dass mit Multiprocessing Aufgaben gleichzeitig auf mehreren CPU-Kernen ausgeführt werden können, was besonders für CPU-intensive Operationen mit Vorteil ist.
Danke für Ihr Feedback!
Fragen Sie AI
Fragen Sie AI
Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen