Sobes.tech
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:

  1. threading modul — 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.

  2. multiprocessing modul — 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.

  3. asyncio modul — aszinkron programozás coroutine-okat használva. Jó sok bemenet/kimenet művelethez.

  4. Magas szintű könyvtárak:

    • concurrent.futures.ThreadPoolExecutor és ProcessPoolExecutor — 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.