Sobes.tech
Junior — Middle
100

Egy coroutine átadhatja-e a vezérlést egy másik coroutine-nak az aszinkron feldolgozás keretében?

Válasz az MI-től

sobes.tech MI

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