Как Python различает вызовы асинхронных функций и фактические операции ввода-вывода?Python

Программы на Python
Ответить
Anonymous
 Как Python различает вызовы асинхронных функций и фактические операции ввода-вывода?

Сообщение Anonymous »

Я это понимаю:
  • Код: Выделить всё

    await some_async_function()
    не передает управление — он просто вызывает функцию синхронно
  • Код: Выделить всё

    await some_io_function()
    ДЕЙСТВИТЕЛЬНО передает управление циклу событий
Но каков фактический механизм? Когда я пишу:

Код: Выделить всё

async def foo():
await bar()  # Doesn't yield

async def bar():
await io_function()  # Yields here
Как исполнитель Python узнает, что bar() должен выполняться синхронно, а io_function() должен давать результат? Что делает io_function() особенным?
Существует ли какой-то внутренний флаг или тип объекта, который сигнализирует «это настоящий ввод-вывод, давайте сейчас»?

Подробнее здесь: https://stackoverflow.com/questions/798 ... i-o-operat
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»