Понимание сопрограмм Python async await (пример цикла блокировки)Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Понимание сопрограмм Python async await (пример цикла блокировки)

Сообщение Anonymous »


Я пытаюсь понять сопрограммы. Я знаю, что они используют одиночный поток, а ключевое слово await означает «вернуть управление другим работающим сопрограммам и дать им возможность запуститься».

У меня есть следующий пример:

импортировать asyncio время импорта асинхронная защита long_function(): # выполнение занимает почти 1 секунду для _ в диапазоне (50000000): проходить асинхронный счетчик определения(): для x в диапазоне (10): распечатать(х) #ожидайте asyncio.sleep(0) ждать long_function() асинхронное определение сбора(): ожидайте asyncio.gather(count(), count()) asyncio.run(собрать()) Я ожидаю, что этот код будет выполняться асинхронно и выдавать такой результат:

0 0 1 1 2 2 ... Однако это дает:

0 1 2 3 ... 0 1 2 3 ... Когда я раскомментирую asyncio.sleep(0), результат будет таким, как ожидалось — асинхронным.

Может ли кто-нибудь объяснить, почему использования await long_function() недостаточно для передачи управления другой сопрограмме? И как это работает на каком-то более низком уровне, чтобы помочь мне понять.

Спасибо.
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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