Sobes.tech
Junior — Middle

Quali metodi sono implementati in Python per eseguire compiti in parallelo o in modo concorrente?

sobes.tech AI

Risposta dell'AI

In Python, vengono utilizzati diversi approcci e librerie per eseguire compiti in modo parallelo o concorrente:

  1. Modulo threading — per creare thread. Adatto per compiti con molte operazioni di input/output, ma non accelera i compiti CPU-bound a causa del GIL.

  2. Modulo multiprocessing — per creare processi. Permette di aggirare il GIL e utilizzare efficacemente più core CPU.

  3. Modulo asyncio — per la programmazione asincrona usando coroutine. Buono per molte operazioni di input/output.

  4. Librerie di alto livello:

    • concurrent.futures.ThreadPoolExecutor e ProcessPoolExecutor — interfacce comode per eseguire compiti in thread o processi.

Esempio di utilizzo di concurrent.futures:

from concurrent.futures import ThreadPoolExecutor

def compito(n):
    print(f"Compito {n} in esecuzione")

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

Quindi, la scelta del metodo dipende dal tipo di compito: per CPU-bound — multiprocessing, per I/O-bound — threading o asyncio.