Junior — Middle
101
Une coroutine peut-elle transférer le contrôle d'exécution à une autre coroutine dans le cadre du traitement asynchrone?
Réponse de l'IA
sobes.tech IA
В Python корутины не передают управление друг другу напрямую, как, например, в некоторых языках с кооперативной многозадачей. Вместо этого управление передаётся через цикл событий (event loop) или через await.
Например, одна корутина может вызвать другую с помощью await, тем самым приостанавливая своё выполнение и позволяя другой корутине выполняться:
import asyncio
async def coro1():
print('Start coro1')
await coro2() # передача управления coro2
print('End coro1')
async def coro2():
print('Start coro2')
await asyncio.sleep(1)
print('End coro2')
asyncio.run(coro1())
Таким образом, корутины взаимодействуют через await и цикл событий, а не напрямую передают управление друг другу.