async i await
Programowanie asynchroniczne: czekanie na operacje bez blokowania całego programu.
Przykład
#Python
import asyncio
async def load(name, delay):
await asyncio.sleep(delay)
return f"{name} gotowe"
async def main():
results = await asyncio.gather(
load("kursy", 0.2),
load("profil", 0.1)
)
print(results)
asyncio.run(main())Wynikzapisany wynik, możesz go sprawdzić
['kursy gotowe', 'profil gotowe']
Definicja i zastosowanie
#Funkcja zdefiniowana przez async def to korutyna. Wewnątrz niej await wstrzymuje jej działanie do czasu zakończenia innej operacji asynchronicznej, pozwalając w międzyczasie wykonywać inne zadania.
Korutyny uruchamia pętla zdarzeń, najprościej przez asyncio.run(main()). Funkcja asyncio.gather() uruchamia kilka korutyn jednocześnie i czeka na wszystkie, co przyspiesza na przykład wiele zapytań sieciowych.
Asynchroniczność pomaga przy operacjach, które głównie czekają: zapytaniach HTTP, bazie danych, plikach. Nie przyspieszy obliczeń obciążających procesor.
Składnia
#Składnia
async def funkcja():
wynik = await inna_korutyna()Dobre praktyki
#asyncio.gather()zwraca wyniki w kolejności przekazanych korutyn, nie w kolejności zakończenia.- Nie wywołuj blokujących funkcji (np.
time.sleep) w korutynach. Używaj ich asynchronicznych odpowiedników.
Powiązane hasła
#- defDefiniuje funkcję: nazwany blok kodu z parametrami, który można wywoływać wielokrotnie.
- yieldTworzy generator: funkcję zwracającą kolejne wartości na żądanie.
- withMenedżer kontekstu: automatyczne przygotowanie i sprzątanie zasobów.
- timeWstrzymywanie programu, znaczniki czasu i dokładny pomiar czasu wykonania kodu.
Widzisz błąd albo brakuje przykładu? Napisz do nas.