Sobes.tech
Junior — Middle

Koje metode su implementirane u Pythonu za izvršavanje zadataka paralelno ili konkurentno?

sobes.tech АИ

Одговор од АИ

U Pythonu, koriste se različiti pristupi i biblioteke za izvršavanje zadataka paralelno ili konkurentno:

  1. Modul threading — za kreiranje niti (threads). Pogodno za zadatke sa mnogo ulaza/izlaza, ali ne ubrzava CPU-bound zadatke zbog GIL-a.

  2. Modul multiprocessing — za kreiranje procesa. Omogućava zaobilaženje GIL-a i efikasno korišćenje više CPU jezgara.

  3. Modul asyncio — za asinhrono programiranje koristeći korutine. Dobro za veliki broj operacija ulaza/izlaza.

  4. Biblioteke visokog nivoa:

    • concurrent.futures.ThreadPoolExecutor i ProcessPoolExecutor — zgodni interfejsi za pokretanje zadataka u nitima ili procesima.

Primer korišćenja concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def zadatak(n):
    print(f"Zadatak {n} se izvršava")

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

Izbor metode zavisi od tipa zadatka: za CPU-bound — multiprocessing, za I/O-bound — threading ili asyncio.