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:
-
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. -
Modulo
multiprocessing— per creare processi. Permette di aggirare il GIL e utilizzare efficacemente più core CPU. -
Modulo
asyncio— per la programmazione asincrona usando coroutine. Buono per molte operazioni di input/output. -
Librerie di alto livello:
concurrent.futures.ThreadPoolExecutoreProcessPoolExecutor— 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.