Проверяет понимание механизма асинхронного программирования в Python с использованием ключевых слов async и await.
async/await — это современный подход к асинхронному программированию в Python, введённый в версии 3.5. Он позволяет писать конкурентный код, который выглядит как синхронный, но при этом не блокирует выполнение программы во время ожидания операций ввода-вывода (например, запросы к сети, чтение файлов, работа с базами данных).
Ключевое слово async перед определением функции превращает её в корутину. Корутина — это специальный объект, который может приостанавливать своё выполнение и возобновлять его позже. Ключевое слово await используется внутри корутины для ожидания результата другой корутины или асинхронной операции. Когда выполнение доходит до await, корутина приостанавливается, и управление возвращается в event loop, который может запустить другую корутину.
import asyncio
async def fetch_data(url):
print(f"Начинаем загрузку {url}")
await asyncio.sleep(2) # Имитация долгой операции
print(f"Загрузка {url} завершена")
return f"Данные из {url}"
async def main():
# Запускаем две корутины конкурентно
task1 = asyncio.create_task(fetch_data("url1"))
task2 = asyncio.create_task(fetch_data("url2"))
# Ожидаем завершения обеих задач
result1 = await task1
result2 = await task2
print(result1, result2)
# Запускаем event loop
asyncio.run(main())async/await идеально подходит для задач, связанных с ожиданием внешних ресурсов: веб-скрапинг, работа с API, чат-серверы, обработка большого количества сетевых соединений. Он не ускоряет CPU-интенсивные вычисления, так как Python всё ещё использует один поток для выполнения кода.
async/await следует применять в приложениях, где много операций ввода-вывода и требуется высокая производительность без усложнения кода потоками. Это стандартный инструмент для современных асинхронных веб-фреймворков (aiohttp, FastAPI) и библиотек для работы с сетью.
Уровень
Рейтинг:
5
Сложность:
5
Навыки
Python
FastAPI
Ключевые слова
Подпишись на Python Developer в телеграм