Asynchronní programování je v informatice klíčovou technikou pro zvýšení efektivity a výkonu aplikací, zejména těch, které jsou závislé na I/O operacích, jako je čtení souborů, práce s databázemi nebo komunikace po síti. V Pythonu můžete pro asynchronní programování využívat standardní knihovnu asyncio
, která umožňuje spouštění kódu asynchronně a paralelně bez blokování hlavního vlákna aplikace.
Základní principy asynchronního programování
Asynchronní programování se opírá o dva základní principy: async
a await
. Klíčové slovo async
se používá před definicí funkce, aby bylo signalizováno, že funkce je asynchronní a měla by být spouštěna asynchronně. Klíčové slovo await
se používá pro volání asynchronních operací, které mohou trvat déle, a umožňuje Pythonu, aby mezitím vykonával jiné úlohy.
Začínáme s asyncio
Pro začátek s asynchronním programováním v Pythonu je potřeba importovat modul asyncio
a definovat asynchronní funkci pomocí klíčového slova async
:
import asyncio
async def muj_asynchronni_ukol():
print('Začínáme asynchronní úkol')
await asyncio.sleep(1)
print('Asynchronní úkol dokončen')
Funkce asyncio.sleep(1)
je asynchronní ekvivalent k běžnému time.sleep(1)
, ale místo blokování celého programu umožňuje běh dalších asynchronních úkolů.
Spouštění asynchronních úkolů
Pro spuštění asynchronní funkce je nutné využít event loop, který je základem asynchronního programování v asyncio
. Event loop můžete spustit a spravovat takto:
import asyncio
async def main():
await muj_asynchronni_ukol()
# Spuštění event loopu a programu
asyncio.run(main())
Práce s více asynchronními úkoly
asyncio
také umožňuje snadno spouštět více asynchronních úkolů paralelně, což je ideální pro operace, jako je stahování více souborů z internetu nebo paralelní zpracování dat. K tomu slouží funkce asyncio.gather()
:
async def ukol1():
await asyncio.sleep(1)
print("Úkol 1 dokončen")
async def ukol2():
await asyncio.sleep(2)
print("Úkol 2 dokončen")
async def main():
await asyncio.gather(ukol1(), ukol2())
asyncio.run(main())
Výše uvedený kód spustí oba úkoly paralelně a celý skript dokončí práci, jakmile všechny asynchronní úkoly skončí.
Asynchronní programování v Pythonu pomocí knihovny asyncio
nabízí výkonný způsob, jak zvýšit efektivitu vašich aplikací, zvláště těch, které jsou náročné na I/O operace. S pomocí async
a await
můžete jednoduše definovat asynchronní úkoly a spouštět je paralelně, což vede k rychlejší a efektivnější práci vašich programů.