Понимание asyncio с длительными вычислениями в PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Понимание asyncio с длительными вычислениями в Python

Сообщение Anonymous »


Сейчас я работаю с библиотекой asyncio Python и сталкиваюсь с некоторым поведением, которое не до конца понимаю. Мой код включает в себя две асинхронные функции: f1, выполняющую длительные вычисления, и f2, простую функцию с коротким периодом ожидания. Вот код:

импортировать asyncio время импорта асинхронная защита f1(): печать("начало f1") пока правда: печать("f1 1") дождитесь asyncio.sleep(0) начало = время.время() [3**100 для _ в диапазоне (8000000)] print("f1 2 прошедшее время: ", time.time() - старт) асинхронная защита f2(): печать("начало f2") ждать asyncio.sleep(0.01) печать("конец f2") асинхронное определение main(): задачи = [ f1(), f2(), ] ожидайте asyncio.gather(*задачи) если __name__ == "__main__": asyncio.run(main()) Я ожидал, что f2 выполнится и быстро завершится после 0,01-секундного сна, даже когда f1 выполняет свои вычисления. Однако результат, который я вижу:

f1 старт f1 1 f2 старт f1 2 прошедшее время: 4.705456018447876 f1 1 f1 2 прошедшее время: 4.23239803314209 f1 1 f1 2 прошедшее время: 4.644515037536621 f1 1 конец f2 f1 2 прошедшее время: 4.337735891342163 f1 1 Похоже, что f2 завершается только после нескольких итераций вычислений f1. Насколько я понимаю, await asyncio.sleep(0) в f1 позволит f2 работать своим чередом, но, похоже, это происходит не так, как ожидалось. Может ли кто-нибудь объяснить, почему f2 не завершается до тех пор, пока не пройдет несколько итераций f1?
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Надежное управление длительными подпроцессами в Python [закрыто]
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Asyncio Async Funcitons вешает с Asyncio.gather. (Код работает без Asyncio.gather)
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Как ускорить использование multiprocessing/process_map и др. с тяжелыми вычислениями в Python (например, numpy)?
    Anonymous » » в форуме Python
    0 Ответы
    27 Просмотры
    Последнее сообщение Anonymous
  • Почему Python невероятно странно справляется с вычислениями мнимых чисел?
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Почему Python невероятно странно справляется с вычислениями мнимых чисел?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

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