Junior — Middle
Milyen módszerek vannak Pythonban a feladatok párhuzamos vagy versengő végrehajtására?
sobes.tech MI
Válasz az MI-től
Pythonban különböző megközelítéseket és könyvtárakat használnak feladatok párhuzamos vagy konkurenst végrehajtására:
-
threadingmodul — szálak (threads) létrehozására. Jó sok bemenet/kimenet művelettel rendelkező feladatokhoz, de a GIL miatt nem gyorsítja a CPU-kötött feladatokat. -
multiprocessingmodul — folyamatok létrehozására. Lehetővé teszi a GIL megkerülését és több CPU mag hatékony kihasználását. -
asynciomodul — aszinkron programozás coroutine-okat használva. Jó sok bemenet/kimenet művelethez. -
Magas szintű könyvtárak:
concurrent.futures.ThreadPoolExecutorésProcessPoolExecutor— kényelmes felület feladatok futtatására szálakban vagy folyamatokban.
A concurrent.futures példája:
from concurrent.futures import ThreadPoolExecutor
def feladat(n):
print(f"Feladat {n} végrehajtódik")
with ThreadPoolExecutor(max_workers=3) as executor:
for i in range(5):
executor.submit(feladat, i)
A módszer kiválasztása a feladat típusától függ: CPU-kötött — multiprocessing, I/O-kötött — threading vagy asyncio.