Пытаюсь разобраться с оператором async python, и все статьи что попадаются и в том числе оф документация говорит о модуле asyncio и поясняют о совместной работе с модулем, но мне надо прояснить некоторые фундаментальные нюансы
что я пока понял
а)Оператор async ставится перед объявлением функции и ни чего не делает если в теле функции нет оператора await
б)Оператор await ставится перед выполнением функции
пока такой вопрос, я так понял что
1)await ставится перед асинхронной функцией, но если это так, то возникает противоречие, как написана первая асинхронная функция если в ней должен быть оператор await которая принимает асинхронную функцию?
2)не пойму задачу await, она ждет выполнение функции при этом позволяет пропустить себя, но обычно функцию выполняют что бы потом что то сделать с результатом, зачем пропускать себя? что бы ускорить выполнение остального кода и получить ответ await как только он будет готов? типо пусть выполнится все что выполняется, а последовательность не важна? но тогда такая асинхронность нужна только в подобном случае. Или есть еще варианты?
3)модуль asyncio так нужен для всего этого, можно без него всем этим пользоваться?
Прежде всего начните с документации. В частности, документации по данному ресурсу. А то у вас уже под сотню вопросов, а Регламент либо не знаете, либо изволите не соблюдать.
Когда вы регистрировались, вы обещали выполнять Регламент. Данное ваше сообщение, например, нарушило сразу несколько параграфов Регламента, например 2.2, 3.1, 3.2, 3.6, 3.7, 5.15 и другие.
Если вы будете продолжать нарушать Регламент, ваши вопросы могут быть удалены, а аккаунт заблокирован модераторами временно или навсегда.
Будьте благоразумны.
Рекомендую исправить вопрос, конкретизировать его. Покажите, как вы пробовали решить свою проблему, приведите код попытки (пусть неудачной), опишите, как запускали, что ожидали и что получилось.
Сейчас это «погуглите за меня и распишите мне тут подробно».
В текущем виде это не вопрос, а задание. Нарушен п.5.12 Регламента.
Модератор, это точно для меня предупреждение? потому что мои вопросы достаточно конкретны, теги соответствуют, регламент 2.2 не очень естественен, ответы может и есть, но во первых я указал что я искал информацию, но возникли трудности в понимании конкретно этих вопросов, иначе зачем вообще задавать вопросы специалистам, ведь ответы в интернете есть всегда
задание это когда нужно за меня написать код, а я прошу ответить на достаточно конкретные вопросы, в некотором смысле на них можно ответить даже только ДА или НЕТ
habrdima, для вас. Конкретный вопрос - это «вот я сделал асинхронный код, ожидаю от него такое поведение, а выходит не так. В чем причина?»
А вот это у вас - не конкретно.
Кроме того, см.п.8.1, 8.2 Регламента.
Чтобы понять async нужно в принципе понимать мультизадачность.
Есть два вида мультизадачки. Первая базируется на preemptive multitasking. Это классика на потоках (Threads). Подходит для приложений где есть нагрузка на CPU и мало I/O. Пример таких приложений - рендеринг 3Д графики. Майнинг.
И есть второй вид когда есть много I/O а нагрузка на процессор - малая и ее можно считать неизменяющейся. Как обработчик событий. Ее делают на async/await. Или еще на мультиплексированном I/O. Она подходит для веб-серверов. Яркий пример - nginx. Или системы обрабоки MQ. Сокет-серверы. Файловые серверы и прочее.
Поэтому изучать async в отрыве от всех методов организации мультизадачности - безсмысленно. Вы ничего не поймете пока не узнаете все use-cases использования железа и ОС. Чтоб понять async - поймите классику.