Sobes.tech
Back to questions
Junior — Middle
65

Объясните механизм работы библиотеки asyncio для асинхронного программирования в Python.

Answer from AI

sobes.tech AI

Библиотека asyncio в Python реализует модель асинхронного программирования на основе событийного цикла (event loop). Она позволяет писать неблокирующий код, который может выполнять множество операций ввода-вывода параллельно, не создавая при этом множество потоков.

Основные компоненты и принципы работы:

  • Event Loop — центральный цикл, который управляет выполнением задач и обработкой событий.
  • Корутинные функции (объявляются с помощью async def) — функции, которые могут приостанавливать своё выполнение с помощью await, позволяя другим задачам выполняться в это время.
  • Фьючи (Future) и Таски (Task) — объекты, представляющие отложенные операции.

Пример:

import asyncio

async def fetch_data():
    print('Start fetching')
    await asyncio.sleep(1)  # имитация асинхронной операции
    print('Done fetching')
    return {'data': 123}

async def main():
    result = await fetch_data()
    print(result)

asyncio.run(main())

В этом примере asyncio.run запускает event loop, который выполняет корутину main. Внутри main вызывается fetch_data, которая приостанавливается на await asyncio.sleep(1), позволяя event loop переключиться на другие задачи (если они есть). Это позволяет эффективно использовать ресурсы, особенно при работе с сетевыми операциями или вводом-выводом.