Python-Threading und Multiprocessing für Anfänger

In Python kann die Verarbeitung paralleler Aufgaben die Leistung Ihrer Anwendungen erheblich steigern, insbesondere bei E/A- oder CPU-gebundenen Vorgängen. Python bietet zwei Hauptmodule für Parallelität: threading und multiprocessing. Dieser Artikel stellt Ihnen diese Module vor und erklärt, wie Sie sie für parallele Programmierung verwenden.

Threading verstehen

Threading ist eine Möglichkeit, mehrere Threads (kleinere Einheiten eines Prozesses) gleichzeitig innerhalb eines einzelnen Prozesses auszuführen. Dies ist nützlich für E/A-gebundene Aufgaben, bei denen Sie viel Zeit mit dem Warten auf externe Ressourcen verbringen (z. B. Datei-E/A, Netzwerkanforderungen).

Einfaches Threading-Beispiel

Um Threads in Python zu erstellen und zu verwalten, verwenden Sie das Modul threading. Hier ist ein einfaches Beispiel:

import threading

# Define a function to be run in a thread
def print_numbers():
    for i in range(5):
        print(i)

# Create a thread object
thread = threading.Thread(target=print_numbers)

# Start the thread
thread.start()

# Wait for the thread to complete
thread.join()

print("Thread has finished execution")

Multiprocessing verstehen

Mit Multiprocessing können Sie mehrere Prozesse gleichzeitig ausführen, jeder mit seinem eigenen Python-Interpreter und Speicherplatz. Dies ist besonders nützlich für CPU-gebundene Aufgaben, bei denen Sie Berechnungen parallel durchführen müssen.

Einfaches Multiprocessing-Beispiel

Das Modul multiprocessing wird zum Erstellen und Verwalten separater Prozesse verwendet. Hier ist ein einfaches Beispiel:

import multiprocessing

# Define a function to be run in a process
def compute_square(number):
    print(f"The square of {number} is {number * number}")

# Create a process object
process = multiprocessing.Process(target=compute_square, args=(5,))

# Start the process
process.start()

# Wait for the process to complete
process.join()

print("Process has finished execution")

Vergleich von Threading und Multiprocessing

  • Threading: Am besten für I/O-gebundene Aufgaben. Threads teilen sich denselben Speicherplatz und können bei Vorgängen, die Wartezeiten beinhalten, effizienter sein.
  • Multiprocessing: Am besten für CPU-gebundene Aufgaben. Prozesse werden in separaten Speicherbereichen ausgeführt und können mehrere CPU-Kerne für rechenintensive Aufgaben voll ausnutzen.

Häufige Anwendungsfälle

  • Threading: Geeignet für Aufgaben wie Web Scraping, Datei-E/A-Operationen oder alle Aufgaben, bei denen auf externe Ressourcen gewartet werden muss.
  • Multiprocessing: Ideal für die Datenverarbeitung, mathematische Berechnungen oder alle Aufgaben, die erhebliche CPU-Ressourcen erfordern.

Abschluss

Sowohl Threading als auch Multiprocessing sind leistungsstarke Tools zur Verbesserung der Leistung und Effizienz Ihrer Python-Anwendungen. Wenn Sie verstehen, wann und wie Sie diese Module verwenden, können Sie effektivere und reaktionsschnellere Programme schreiben. Egal, ob Sie mit I/O-gebundenen Aufgaben oder CPU-gebundenen Berechnungen arbeiten, Python bietet die Tools, die Sie für die effektive Handhabung paralleler Vorgänge benötigen.