Junior — Middle
Magyarázza el az asyncio könyvtár működési mechanizmusát az aszinkron programozásban Pythonban.
sobes.tech MI
Válasz az MI-től
A asyncio könyvtár Pythonban egy eseményhurkot (event loop) alapú aszinkron programozási modellt valósít meg. Lehetővé teszi nem blokkoló kód írását, amely párhuzamosan több bemeneti/kimeneti műveletet hajthat végre, anélkül, hogy több szálat hozna létre.
Fő összetevők és működési elvek:
- Event Loop — a központi ciklus, amely az feladatok végrehajtását és az események feldolgozását irányítja.
- Korutin funkciók (
async def-tel deklarálva) — olyan funkciók, amelyekawaitsegítségével szüneteltethetik a végrehajtásukat, lehetővé téve más feladatok futását közben. - Futures és Task-ok — késleltetett műveleteket reprezentáló objektumok.
Példa:
import asyncio
async def fetch_data():
print('Start fetching')
await asyncio.sleep(1) # szimulált aszinkron művelet
print('Done fetching')
return {'data': 123}
async def main():
result = await fetch_data()
print(result)
asyncio.run(main())
Ebben a példában az asyncio.run elindítja az eseményhurkot, amely végrehajtja a main korutint. A main belsejében meghívódik a fetch_data, amely a await asyncio.sleep(1)-nél szünetel, lehetővé téve az eseményhurknak, hogy más feladatokra váltson (ha vannak). Ez hatékony erőforrás-kihasználást tesz lehetővé, különösen hálózati műveletek vagy bemenet/kimenet esetén.