Sobes.tech
Junior — Middle

Jakie metody są zaimplementowane w Pythonie do wykonywania zadań równolegle lub konkurencyjnie?

sobes.tech AI

Odpowiedź od AI

W Pythonie do wykonywania zadań równoległych lub współbieżnych używa się różnych podejść i bibliotek:

  1. Moduł threading — do tworzenia wątków. Odpowiedni dla zadań z dużą ilością operacji wejścia/wyjścia, ale nie przyspiesza zadań CPU-bound z powodu GIL.

  2. Moduł multiprocessing — do tworzenia procesów. Pozwala obejść GIL i efektywnie korzystać z wielu rdzeni CPU.

  3. Moduł asyncio — do programowania asynchronicznego z użyciem korutyn. Dobrze sprawdza się przy dużej liczbie operacji wejścia/wyjścia.

  4. Biblioteki wysokiego poziomu:

    • concurrent.futures.ThreadPoolExecutor i ProcessPoolExecutor — wygodny interfejs do uruchamiania zadań w wątkach lub procesach.

Przykład użycia concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def zadanie(n):
    print(f"Zadanie {n} jest wykonywane")

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

Wybór metody zależy od typu zadania: dla CPU-bound — multiprocessing, dla I/O-bound — threading lub asyncio.