Košík je prázdný

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ů.