Есть ли разница между сопрограммой, которая не дает, и нормальной функцией синхронизации? - PullRequest
0 голосов
/ 13 ноября 2018

Предположим, у меня есть нормальная функция синхронизации, которая часто вызывается в моем асинхронном приложении. Имеет ли какое-то значение, если я просто определю ее как асинхронную функцию, чтобы я мог ее дождаться, но я вообще не изменяю ее код?

1 Ответ

0 голосов
/ 13 ноября 2018

Это не имеет (семантической) разницы, сопрограмма, которая не await, все еще является совершенно допустимой сопрограммой, которую можно ожидать, передаваемой в asyncio.run, asyncio.create_task, asyncio.gather и и так далее.

Возможно, вы захотите добавить комментарий, чтобы читатель понял, что функция на самом деле не содержит никакого кода блокировки.

Например, следующий код:

while some_condition:
    await coroutine_without_await()

Этот код блокирует цикл событий до тех пор, пока длится цикл while, независимо от наличия await.

...