Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Войти

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

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

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: asyncio, task, queue

Инструменты в asyncio и их применение.

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

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

Asyncio предоставляет инструменты для управления корутинами: Task для параллельного выполнения, Queue для коммуникации, Lock для синхронизации, Event для уведомлений, и Semaphore для ограничения параллелизма.

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

Библиотека asyncio предлагает богатый набор инструментов для построения асинхронных приложений.

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

1. Task - управление корутинами:

import asyncio

async def worker(name):
    print(f"{name} начал работу")
    await asyncio.sleep(1)
    print(f"{name} завершил работу")

async def main():
    # Создание и запуск задач
    task1 = asyncio.create_task(worker("Работник 1"))
    task2 = asyncio.create_task(worker("Работник 2"))
    
    # Ожидание завершения
    await task1
    await task2

asyncio.run(main())

2. Queue - коммуникация между корутинами:

import asyncio

async def producer(queue):
    for i in range(5):
        await queue.put(f"элемент {i}")
        await asyncio.sleep(0.1)
    await queue.put(None)  # Сигнал завершения

async def consumer(queue):
    while True:
        item = await queue.get()
        if item is None:
            break
        print(f"Обработано: {item}")
        queue.task_done()

async def main():
    queue = asyncio.Queue()
    await asyncio.gather(
        producer(queue),
        consumer(queue)
    )

asyncio.run(main())

3. Synchronization primitives:

  • Lock: исключительный доступ к ресурсу

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

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

4. Utilities:

  • asyncio.gather(): параллельное выполнение

  • asyncio.wait(): ожидание с условиями

  • asyncio.sleep(): асинхронная задержка

Уровень

  • Рейтинг:

    3

  • Сложность:

    8

Навыки

  • Python

    Python

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

#asyncio

#task

#queue

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