📝 LLM и AI

asyncio в Python: асинхронное программирование

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
318
🌿
Уровень
Средний

asyncio — стандартная библиотека Python для асинхронного кода. Позволяет выполнять несколько задач «одновременно» в одном потоке.

Аналогия

Синхронный повар: поставил стейк → стоит и ждёт → готово → режет овощи.

Асинхронный повар: поставил стейк → пока жарится — режет овощи → ставит воду → возвращается к стейку.

Один поток, несколько дел одновременно.

async / await

import asyncio

async def fetch_data(url: str) -> str:
    await asyncio.sleep(1)  # имитация HTTP запроса
    return f"Данные с {url}"

async def main():
    result = await fetch_data("https://api.example.com")
    print(result)

asyncio.run(main())
  • async def — объявляет корутину
  • await — приостанавливает выполнение, отдаёт управление event loop
  • asyncio.run() — запускает event loop

asyncio.gather() — параллельные задачи

import asyncio

async def task(name: str, delay: float) -> str:
    await asyncio.sleep(delay)
    return f"{name} готово"

async def main():
    # Запускаем три задачи параллельно
    results = await asyncio.gather(
        task("A", 1.0),
        task("B", 0.5),
        task("C", 1.5),
    )
    print(results)  # ['A готово', 'B готово', 'C готово']
    # Выполнится за 1.5 сек, не за 3.0!

asyncio.run(main())

AsyncAnthropic — пример с Claude

import asyncio
import anthropic

client = anthropic.AsyncAnthropic()

async def ask_claude(question: str) -> str:
    response = await client.messages.create(
        model="claude-sonnet-4-6",
        max_tokens=512,
        messages=[{"role": "user", "content": question}]
    )
    return response.content[0].text

async def analyze_batch(texts: list[str]) -> list[str]:
    tasks = [ask_claude(f"Резюмируй: {text}") for text in texts]
    return await asyncio.gather(*tasks)

asyncio.run(analyze_batch(["текст 1", "текст 2", "текст 3"]))

asyncio vs threading

asyncio threading
Модель Один поток, event loop Несколько потоков
I/O задачи ✅ Отлично ✅ Хорошо
CPU задачи ❌ Плохо ✅ Хорошо
Сложность Средняя Выше (race conditions)
API calls ✅ Идеально ✅ Работает

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

httpx: современный HTTP-клиент для Python

httpx — HTTP-клиент нового поколения. Интерфейс похож на requests, но с поддержкой async/await из коробки.

📅 30.06.2026 👁️ 330
📝

AI-агенты: ReAct loop и автономные действия

Чат-бот отвечает на вопросы. Агент — действует: вызывает инструменты, получает реальные данные и использует их...

📅 30.06.2026 👁️ 335
📝

Pydantic v2: валидация данных в Python

Pydantic — библиотека для проверки и преобразования данных через аннотации типов. Она часто используется в...

📅 30.06.2026 👁️ 328
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

FastAPI: от первого маршрута до AI-сайта Открыть программу курса Нейросети в коде: 5 AI-проектов на Python с Claude Открыть программу курса