Ответ
Асинхронное программирование в Python предназначено для эффективной обработки I/O-bound задач (например, сетевые запросы, работа с файлами) и строится вокруг концепции событийного цикла (event loop) и корутин (coroutines).
Ключевые библиотеки:
-
asyncio
Это встроенная в Python библиотека, являющаяся фундаментом для большинства асинхронных приложений. Она предоставляет API для запуска корутин, управления задачами и реализации асинхронных I/O операций.Пример:
import asyncio async def say_hello_after(delay, name): await asyncio.sleep(delay) print(f"Hello, {name}!") async def main(): # Задачи выполняются конкурентно, а не последовательно task1 = asyncio.create_task( say_hello_after(1, 'World')) task2 = asyncio.create_task( say_hello_after(2, 'Python')) print("Started...") await task1 await task2 print("Finished.") asyncio.run(main())
-
aiohttp
Популярная библиотека для создания асинхронных HTTP-клиентов и серверов. Она идеально подходит для написания веб-скраперов или микросервисов, которые активно взаимодействуют с другими API. -
FastAPI
/Starlette
Современные высокопроизводительные веб-фреймворки, построенные наasyncio
. Они позволяют легко создавать асинхронные API, используя все преимуществаasync/await
. -
asyncpg
/aiomysql
Асинхронные драйверы для работы с базами данных PostgreSQL и MySQL соответственно. Они позволяют выполнять запросы к БД, не блокируя событийный цикл.
Важно отличать асинхронность от параллелизма:
- Асинхронность (
asyncio
) идеальна для I/O-bound задач, где программа ждет ответа от внешнего ресурса. - Параллелизм (
multiprocessing
) используется для CPU-bound задач, требующих интенсивных вычислений, путем распределения работы по нескольким ядрам процессора.