Sobes.tech
Junior — Middle

Lehetséges több feladatot egyidejűleg végrehajtani egy szálon Pythonban?

sobes.tech MI

Válasz az MI-től

Pythonban egyetlen szálon több feladat is párhuzamosan végrehajtható aszinkron programozás (asyncio) vagy generátorok segítségével, amelyek lehetővé teszik a feladatok közötti váltást új szálak létrehozása nélkül. Azonban a CPython szabványos implementációjában a GIL (Global Interpreter Lock) miatt a Python-kódot futtató több szál egyidejű végrehajtása korlátozott: egyszerre csak egy szál fut.

Példa asyncio-val egy szálon történő feladatok párhuzamos végrehajtására:

import asyncio

async def feladat(név, késleltetés):
    await asyncio.sleep(késleltetés)
    print(f"Feladat {név} befejeződött")

async def main():
    await asyncio.gather(
        feladat('A', 1),
        feladat('B', 2),
        feladat('C', 1.5)
    )

asyncio.run(main())

Így több feladat "párhuzamosan" hajtható végre egy szálon, a várakozási idő alapján váltva, de nem egyidejűleg a többszálúság (multitasking) értelemben.