Middle
Mi az az aszinkron programozás (async)?
sobes.tech MI
Válasz az MI-től
Aszinkron programozás olyan paradigma, amely lehetővé teszi több feladat egyidejű végrehajtását anélkül, hogy blokkolná a program fő végrehajtási szálát. Ez a várakozási idő hatékony kihasználásával érhető el (például bemeneti/kimeneti műveletek során).
Fő fogalmak:
- Koruynok: Olyan speciális függvények, amelyek végrehajtását megszakíthatják és később folytathatják.
async def-tel deklarálják. - Eseményhurkak: A fő szervező, amely irányítja a korutinek végrehajtását, figyeli az eseményeket és váltogat a feladatok között, amikor valamelyik várakozik.
- await: Kulcsszó a koruyn végrehajtásának felfüggesztésére, amíg a várt művelet be nem fejeződik (például másik koruyn hívása vagy I/O eredményének várása).
Példa:
// Aszinkron függvény példája
import asyncio
async def fetch_url(url):
print(f"Betöltés kezdete: {url}")
await asyncio.sleep(2) // Hosszú művelet szimulációja (pl. hálózati kérés)
print(f"Betöltés befejezve: {url}")
async def main():
# Feladatok korutinekből
task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
task2 = asyncio.create_task(fetch_url("http://example.com/page2"))
# Várakozás mindkét feladat befejezésére
await task1
await task2
// Eseményhurkát indítunk
if __name__ == "__main__":
asyncio.run(main())
Előnyök:
- Teljesítmény növelése: Különösen I/O-kötött feladatoknál (hálózati kérések, fájlkezelés).
- Erőforrások hatékonyabb kihasználása: Nem hoz létre több szálat vagy folyamatot, ez csökkenti a költségeket.
- Reagálóképesség fenntartása: A fő szál nem blokkolódik, ez fontos interaktív alkalmazások vagy szerverek esetén.
Az aszinkron programozás alkalmas:
- Web szerverekhez (pl.
asynciovagyFastAPIhasználatával). - Weboldalak elemzéséhez.
- Adatbázisokkal való munkához.
- Bármilyen feladathoz, amely külső erőforrások várakozásával jár.