Sobes.tech
Junior — Middle

Hogyan történik a coroutine integrálása a fő eseménykezelő ciklussal?

sobes.tech MI

Válasz az MI-től

Pythonban a korutinok beépülnek a fő eseményhurokba (event loop), amely kezeli azok végrehajtását és közötti váltásukat. A fő hurok elindítja a korutinokat, szünetelteti őket aszinkron műveletek (pl. bemenet-kimenet) várakozásakor, és folytatja őket, amikor a művelet befejeződik.

Például az asyncio-ban az eseményhurok futtat egy korutint, amely használhatja a await-et más aszinkron művelet eredményének várására. Várakozás közben az eseményhurok más feladatokra vált, biztosítva a források hatékony kihasználását.

Példa:

import asyncio

async def say_hello():
    print("Szia")
    await asyncio.sleep(1)  # 1 másodpercre szünetelteti a korutint
    print("Viszlát")

asyncio.run(say_hello())

Itt az asyncio.run elindítja az eseményhurkot, amely kezeli a say_hello korutint. Amikor eléri a await asyncio.sleep(1)-et, a korutint szünetelteti, és az eseményhurok más feladatokat is végrehajthat, ha vannak.