Middle
Čo je asynchrónne programovanie (async)?
sobes.tech AI
Odpoveď od AI
Asynchrónne programovanie je paradigma, ktorá umožňuje vykonávať viacero úloh súčasne, bez blokovania hlavného vlákna vykonávania programu. Toho sa dosahuje efektívnym využívaním času čakania (napríklad pri operáciách vstupu/výstupu).
Hlavné koncepty:
- Koruiny: Špeciálne funkcie, ktoré môžu pozastaviť svoje vykonávanie a neskôr ho pokračovať. Deklarujú sa pomocou
async def. - Event Loop: Hlavný orchestrátor, ktorý riadi vykonávanie korúin, sleduje udalosti a prepína medzi úlohami, keď jedna z nich čaká.
- await: Kľúčové slovo na pozastavenie vykonávania koruiny do dokončenia očakávanej operácie (napríklad volania inej koruiny alebo čakania na výsledok I/O).
Príklad:
// Príklad asynchrónnej funkcie
import asyncio
async def fetch_url(url):
print(f"Začínam načítanie: {url}")
await asyncio.sleep(2) // Simulácia dlhšej operácie (napríklad sieťový požiadavok)
print(f"Načítanie dokončené: {url}")
async def main():
# Vytvárame úlohy z korúin
task1 = asyncio.create_task(fetch_url("http://example.com/page1"))
task2 = asyncio.create_task(fetch_url("http://example.com/page2"))
# Čakáme na dokončenie oboch úloh
await task1
await task2
// Spúšťame slučku udalostí
if __name__ == "__main__":
asyncio.run(main())
Výhody:
- Zvýšenie výkonu: Obzvlášť pre úlohy viazané na I/O (sieťové požiadavky, práca so súbormi).
- Lepšie využitie zdrojov: Nezaloží sa viac vlákien alebo procesov, čo znižuje režijné náklady.
- Udržiavanie odozvy: Hlavné vlákno nie je blokované, čo je dôležité pre interaktívne aplikácie alebo servery.
Asynchrónne programovanie je vhodné pre:
- Webové servery (napríklad s použitím
asyncioaleboFastAPI). - Parsovanie webových stránok.
- Prácu s databázami.
- Akékoľvek úlohy, ktoré čakajú na externé zdroje.