Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lernen Arbeiten mit Prozessen | Multithreading vs. Multiprocessing
Python Fortgeschrittene Konzepte

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.

123456789101112131415
import 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.Process erstellt;
    • Jedem Prozess wird eine Zielfunktion (print_message) und Argumente für diese Funktion übergeben.
  • 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.
  • Parallele Ausführung:

    • Beide Prozesse schlafen für unterschiedliche Zeitspannen (2 und 1 Sekunden) mit time.sleep();
    • Da sie parallel laufen, beendet der Prozess mit der kürzeren Verzögerung seine Aufgabe zuerst, auch wenn er später gestartet wurde.
  • 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.

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.

question mark

Welche Aussage beschreibt am besten den Unterschied zwischen Threads und Prozessen in Python?

Wählen Sie die richtige Antwort aus

War alles klar?

Wie können wir es verbessern?

Danke für Ihr Feedback!

Abschnitt 3. Kapitel 4

Fragen Sie AI

expand

Fragen Sie AI

ChatGPT

Fragen Sie alles oder probieren Sie eine der vorgeschlagenen Fragen, um unser Gespräch zu beginnen

Abschnitt 3. Kapitel 4
some-alt