Есть ли какое-то преимущество в определении синхронной функции asyn c и ее ожидании? - PullRequest
0 голосов
/ 12 марта 2020

Предположим, у меня есть функция со следующим определением:

def f(x, y):
    sum = x + y
    return sum

, и я использую эту функцию в другом сопрограмме, например, g:

async def g():
    .
    sum = f(2, 3)
    .

Есть ли какое-либо преимущество в определении f как сопрограмму и жду в г или результат тот же?

async def g():
    .
    sum = await f(2, 3)
    .

1 Ответ

2 голосов
/ 12 марта 2020

Различие это двоякое:

  • Дополнительный await вводит в ваш код "разрыв", в котором другие асин * c имеют шанс на выполнение; Ваши асин * c задачи не должны быть такими длительными, чтобы это имело какое-то практическое значение, но вот оно у вас есть.

  • Вы готовите свой код для асин c выполнение, которое имеет значение, если вы передадите f в качестве обратного вызова:

    async def g(f):
        sum = await f(2, 3)
    

    Даже если f сейчас не асинхронный, вы можете реорганизовать его как асинхронный в будущем, и интерфейс будет продолжайте работать без изменений. Имеет ли это практический смысл для вас, решать вам.

...