Задать вопрос
@habrdima

В чем Базовая суть async функций?

Пытаюсь разобраться с оператором async python, и все статьи что попадаются и в том числе оф документация говорит о модуле asyncio и поясняют о совместной работе с модулем, но мне надо прояснить некоторые фундаментальные нюансы

что я пока понял
а)Оператор async ставится перед объявлением функции и ни чего не делает если в теле функции нет оператора await
б)Оператор await ставится перед выполнением функции

пока такой вопрос, я так понял что
1)await ставится перед асинхронной функцией, но если это так, то возникает противоречие, как написана первая асинхронная функция если в ней должен быть оператор await которая принимает асинхронную функцию?
2)не пойму задачу await, она ждет выполнение функции при этом позволяет пропустить себя, но обычно функцию выполняют что бы потом что то сделать с результатом, зачем пропускать себя? что бы ускорить выполнение остального кода и получить ответ await как только он будет готов? типо пусть выполнится все что выполняется, а последовательность не важна? но тогда такая асинхронность нужна только в подобном случае. Или есть еще варианты?
3)модуль asyncio так нужен для всего этого, можно без него всем этим пользоваться?
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой 4 комментария
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Чтобы понять async нужно в принципе понимать мультизадачность.

Есть два вида мультизадачки. Первая базируется на preemptive multitasking. Это классика на потоках (Threads). Подходит для приложений где есть нагрузка на CPU и мало I/O. Пример таких приложений - рендеринг 3Д графики. Майнинг.

И есть второй вид когда есть много I/O а нагрузка на процессор - малая и ее можно считать неизменяющейся. Как обработчик событий. Ее делают на async/await. Или еще на мультиплексированном I/O. Она подходит для веб-серверов. Яркий пример - nginx. Или системы обрабоки MQ. Сокет-серверы. Файловые серверы и прочее.

Поэтому изучать async в отрыве от всех методов организации мультизадачности - безсмысленно. Вы ничего не поймете пока не узнаете все use-cases использования железа и ОС. Чтоб понять async - поймите классику.

UPD: Fixed
Ответ написан
@deliro
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы