Sobes.tech
Junior — Middle

Ce metode sunt implementate în Python pentru a realiza sarcini în paralel sau concurent?

sobes.tech AI

Răspuns de la AI

În Python, se utilizează diferite abordări și biblioteci pentru a executa sarcini în paralel sau concurent:

  1. Modulul threading — pentru crearea de fire de execuție (threads). Potrivit pentru sarcini cu multe operații de intrare/ieșire, dar nu accelerează sarcinile CPU-bound din cauza GIL.

  2. Modulul multiprocessing — pentru crearea de procese. Permite ocolirea GIL și utilizarea eficientă a mai multor nuclee CPU.

  3. Modulul asyncio — pentru programare asincronă folosind corutine. Potrivit pentru un număr mare de operații de intrare/ieșire.

  4. Biblioteci de nivel înalt:

    • concurrent.futures.ThreadPoolExecutor și ProcessPoolExecutor — interfețe convenabile pentru rularea sarcinilor în fire sau procese.

Exemplu de utilizare a concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def sarcină(n):
    print(f"Sarcina {n} se execută")

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

Alegerea metodei depinde de tipul sarcinii: pentru CPU-bound — multiprocessing, pentru I/O-bound — threading sau asyncio.