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 переключиться на другие задачи (если они есть). Это позволяет эффективно использовать ресурсы, особенно при работе с сетевыми операциями или вводом-выводом.