Junior — Middle
Welke methoden zijn geïmplementeerd in Python voor het uitvoeren van taken parallel of concurrerend?
sobes.tech AI
Antwoord van AI
In Python worden verschillende benaderingen en bibliotheken gebruikt om taken parallel of gelijktijdig uit te voeren:
-
Module
threading— voor het maken van threads. Geschikt voor taken met veel invoer/uitvoer, maar versnelt CPU-bound taken niet vanwege GIL. -
Module
multiprocessing— voor het maken van processen. Maakt het mogelijk om GIL te omzeilen en meerdere CPU-kernen efficiënt te gebruiken. -
Module
asyncio— voor asynchrone programmering met behulp van coroutines. Goed voor veel invoer/uitvoer operaties. -
Hogere niveau bibliotheken:
concurrent.futures.ThreadPoolExecutorenProcessPoolExecutor— handige interfaces voor het uitvoeren van taken in threads of processen.
Voorbeeld van gebruik van concurrent.futures:
from concurrent.futures import ThreadPoolExecutor
def taak(n):
print(f"Taak {n} wordt uitgevoerd")
with ThreadPoolExecutor(max_workers=3) as executor:
for i in range(5):
executor.submit(taak, i)
De keuze van de methode hangt af van het type taak: voor CPU-bound — multiprocessing, voor I/O-bound — threading of asyncio.