Sobes.tech
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 и цикл событий, а не напрямую передают управление друг другу.