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.