Ответ
Асинхронное программирование в Python — это парадигма, позволяющая эффективно выполнять операции ввода-вывода (I/O-bound задачи, например, сетевые запросы, чтение/запись файлов) без блокировки основного потока выполнения. Вместо того чтобы ждать завершения одной операции, программа может переключиться на другую задачу, используя событийный цикл (event loop). Это повышает отзывчивость и пропускную способность приложения.
Ключевые концепции:
async/await: Синтаксис для определения асинхронных функций (корутин) и ожидания их результатов.awaitприостанавливает выполнение текущей корутины, позволяя событийному циклу выполнять другие задачи.asyncio: Стандартная библиотека Python, предоставляющая инфраструктуру для написания конкурентного кода с использованием синтаксисаasync/await.- Корутины (coroutines): Специальные функции, которые могут быть приостановлены и возобновлены. Они являются строительными блоками асинхронного кода.
Пример использования asyncio:
import asyncio
async def fetch_data(delay: int, name: str) -> str:
"""Имитирует асинхронную операцию, например, сетевой запрос."""
print(f"[{name}] Начало загрузки...")
await asyncio.sleep(delay) # Имитация долгой I/O операции
print(f"[{name}] Данные загружены.")
return f"Результат от {name}"
async def main():
print("Запуск основной асинхронной функции.")
# Создаем несколько задач, которые будут выполняться конкурентно
task1 = asyncio.create_task(fetch_data(2, "Задача 1"))
task2 = asyncio.create_task(fetch_data(1, "Задача 2"))
print("Делаем что-то ещё, пока задачи выполняются...")
# Ожидаем завершения всех задач
result1 = await task1
result2 = await task2
print(f"Получены результаты: {result1}, {result2}")
if __name__ == "__main__":
# asyncio.run() запускает событийный цикл и выполняет главную корутину
asyncio.run(main())
Почему это важно: Асинхронное программирование особенно полезно для приложений, где много времени тратится на ожидание внешних операций (например, веб-серверы, парсеры, боты), так как оно позволяет эффективно использовать ресурсы CPU, не блокируя выполнение других задач.