Sobes.tech
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. asyncio vagy FastAPI haszná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.