Как устроены корутины и event loop в Python?
Ответ от нейросети
sobes.tech AI
В Python корутины — это специальные функции, которые могут приостанавливать своё выполнение и возобновлять его позже, что позволяет эффективно работать с асинхронными операциями без блокировки основного потока.
Event loop — это цикл событий, который управляет выполнением корутин. Он отслеживает, когда корутина готова продолжить работу (например, когда завершилась операция ввода-вывода) и переключается между ними, обеспечивая однопоточное асинхронное выполнение.
В основе лежит механизм await, который приостанавливает корутину до завершения асинхронной операции. В Python это реализовано в модуле asyncio.
Пример:
import asyncio
async def say_hello():
print('Hello')
await asyncio.sleep(1) # имитация асинхронной операции
print('World')
asyncio.run(say_hello())
Здесь event loop запускает корутину say_hello, которая приостанавливается на await asyncio.sleep(1), позволяя event loop переключиться на другие задачи, если они есть.
Важно, что корутины в Python не создают новые потоки, а работают в одном потоке, что отличает их от многопоточности.