Sobes.tech
Junior — Middle

Welche Methoden sind in Python implementiert, um Aufgaben parallel oder konkurrierend auszuführen?

sobes.tech KI

Antwort von AI

In Python werden verschiedene Ansätze und Bibliotheken verwendet, um Aufgaben parallel oder konkurrierend auszuführen:

  1. Modul threading — zum Erstellen von Threads. Geeignet für Aufgaben mit vielen Ein- und Ausgaben, aber beschränkt durch den GIL bei CPU-bound Aufgaben.

  2. Modul multiprocessing — zum Erstellen von Prozessen. Ermöglicht das Umgehen des GIL und die effiziente Nutzung mehrerer CPU-Kerne.

  3. Modul asyncio — für asynchrone Programmierung mit Coroutinen. Gut geeignet für viele Ein- und Ausgaben.

  4. Hochrangige Bibliotheken:

    • concurrent.futures.ThreadPoolExecutor und ProcessPoolExecutor — bequeme Schnittstellen zum Ausführen von Aufgaben in Threads oder Prozessen.

Beispiel für die Verwendung von concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def aufgabe(n):
    print(f"Aufgabe {n} läuft")

with ThreadPoolExecutor(max_workers=3) as executor:
    for i in range(5):
        executor.submit(aufgabe, i)

Die Wahl der Methode hängt also vom Aufgabentyp ab: Für CPU-bound — multiprocessing, für I/O-bound — threading oder asyncio.