Встречается на собеседованиях • сегодня

Может ли одна корутина отдать управление другой корутине

В Python корутины не могут напрямую передавать управление друг другу. Управление корутинами осуществляется через event loop, который решает, какую корутину запускать или возобновлять.

Однако, корутина может явно попросить event loop переключиться на другую корутину с помощью await или asyncio.sleep(0).

Пример:

python
import asyncio

async def coro1():
    print("Coro 1 started")
    await asyncio.sleep(0)  # Отдаём управление event loop
    print("Coro 1 resumed")

async def coro2():
    print("Coro 2 started")
    await asyncio.sleep(0)
    print("Coro 2 resumed")

async def main():
    await asyncio.gather(coro1(), coro2())

asyncio.run(main())

Вывод:

text
Coro 1 started  
Coro 2 started  
Coro 1 resumed  
Coro 2 resumed  

Таким образом, корутины не управляют друг другом напрямую, но могут "подсказать" event loop, когда стоит переключиться.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы