Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: asyncio, synchronization, lock, semaphore

Какие примитивы синхронизации есть в asyncio?

Вопрос охватывает инструменты для синхронизации корутин в asyncio.

Короткий ответ

Основные примитивы:

  • Lock — блокировка для исключительного доступа

  • Event — уведомление между корутинами

  • Semaphore — ограничение числа одновременных операций

  • Condition — сложные условия ожидания

Длинный ответ

1. Lock (блокировка):

lock = asyncio.Lock()

async def safe_update():
    async with lock:  # Только одна корутина за раз
        # Критическая секция

2. Event (событие):

event = asyncio.Event()

async def waiter():
    await event.wait()  # Ждём сигнала
    print("Событие произошло!")

async def setter():
    await asyncio.sleep(1)
    event.set()  # Разблокирует всех waiters

3. Semaphore (семафор):

sem = asyncio.Semaphore(3)  # Макс 3 одновременных вызова

async def limited_task():
    async with sem:
        await heavy_operation()

Вывод:
Выбор примитива зависит от сценария синхронизации.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Python

    Python

Ключевые слова

#asyncio

#synchronization

#lock

#semaphore

Подпишись на Python Developer в телеграм