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:
-
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. -
Moduł
multiprocessing— do tworzenia procesów. Pozwala obejść GIL i efektywnie korzystać z wielu rdzeni CPU. -
Moduł
asyncio— do programowania asynchronicznego z użyciem korutyn. Dobrze sprawdza się przy dużej liczbie operacji wejścia/wyjścia. -
Biblioteki wysokiego poziomu:
concurrent.futures.ThreadPoolExecutoriProcessPoolExecutor— 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.