10. Асинхронное программирование. Лекция 1 - Эдуард Жук

  Рет қаралды 41,618

Yandex for Developers

Yandex for Developers

Күн бұрын

Во время лекции рассмотрим, в чём проблема синхронных приложений и что с этим можно сделать.
Обсудим, что происходит с точки зрения ОС при HTTP-запросе, как обрабатывать несколько запросов одновременно и какие есть преимущества, недостатки у процессов и потоков в веб-серверах. Вы узнаете об особенностях потоков в Python. Обсудим неблокирующий ввод-вывод: как обрабатывать несколько запросов в одном потоке.
Поговорим о том, что такое event-loop и зачем он нужен. Затронем тему выбора между синхронным и асинхронным решением.
Презентация: yadi.sk/i/OhqX...
Полезные ссылки:
Linux System Programming: www.oreilly.co...
A Web Crawler With asyncio Coroutines: www.aosabook.o...
David Beazley: Generators: The Final Frontier: • David Beazley: Generat...
Весь плейлист: • Школа бэкенд-разработк...

Пікірлер: 63
@EugeneErmolov
@EugeneErmolov 4 жыл бұрын
Прямо приятное и простое объяснение async/await. Спасибо Эдуарду, что съекономил время на Beazley
@benyomin94
@benyomin94 4 жыл бұрын
Отличнейший доклад просто, харизма автора так и прет Спасибо!
@АлександрИванов-ъ7р6ч
@АлександрИванов-ъ7р6ч 2 жыл бұрын
Очень востребованная тема, хороший доклад. Автору - спасибо.
@ipabogdanov
@ipabogdanov Жыл бұрын
Отличная лекция. Автор молодец, очень энергичный, с чувством юмора и умеет подать материал
@jeromewicks3896
@jeromewicks3896 4 жыл бұрын
19:58, вообще-то мы хотим обрабатывать несколько запросов НЕЗАВИСИМО, а не одновременно (хотя не исключаем это). Это вопрос про concurrency vs parallelism. Кому интересно можете глянуть лекцию Роба Пайка "Concurrency is not parallelism"
@samharrison7791
@samharrison7791 2 жыл бұрын
Самый крутой лектор из всех!
@yodapunishes
@yodapunishes 4 жыл бұрын
Потрясающая лекция!
@silicodance
@silicodance 2 жыл бұрын
Офигеть, я так-же интуитивно делал эти колбэки и цикл событий в микроконтроллерных прошивках на Си, и отдельные колбэки для ошибок, и даже не подозревал, что это так где-то ещё делается и не знал что оно так называется)
@FoodMaks
@FoodMaks 3 жыл бұрын
Очень крутой и внятный доклад. Спасибо большое
@dmitrys5289
@dmitrys5289 2 жыл бұрын
Видишь сервер? Нет. И я не вижу, а он есть))) А вообще отличная лекция
@antonkot6250
@antonkot6250 3 жыл бұрын
Спасибо за отличную лекцию. Сам то я джавист, но убедили попробовать Spring Reactor =)
@KirillKravitz
@KirillKravitz 4 жыл бұрын
Спасибо. С удовольствием посмотрел. Из за карантина немного странно видеть людей, сидящих менее 2х метров друг от друга =)))
@TheRevengencer7Sc
@TheRevengencer7Sc 4 жыл бұрын
это записи с 2019 года
@KirillKravitz
@KirillKravitz 4 жыл бұрын
@@TheRevengencer7Sc эт понятно то
@СергейНазаров-з3о
@СергейНазаров-з3о 3 жыл бұрын
ты просто в карантин в Москве на метро и маршрутках не ездил, тогда бы понял, что все на этот карантин болт ложат большой, ну кроме мусоров, конечно, тем-то штрафовать надо, бабосики стричь.
@non5309
@non5309 Жыл бұрын
Ссылку в чатик с пайкона где 2-х часовая версия вместо 4-х видимо не кинули?
@vladimirshitov2160
@vladimirshitov2160 4 жыл бұрын
А что плохого в том, что Инстаграм использует джанго? Или речь о том, что джанго не поддерживал асинхронное программирование?
@NickRossik
@NickRossik 4 жыл бұрын
Джанго - легаси без асинка. Не знаю как сейчас, а год-два назад некоторые модули были написаны на python2.
@viacheslavfeno1475
@viacheslavfeno1475 3 жыл бұрын
Это божественно.
@senioreasy
@senioreasy 4 жыл бұрын
Не плохо было бы указать в теме, что примеры на "питоне". Я на плюсах пишу, и лекция интересна постольку поскольку
@bloodielie7280
@bloodielie7280 4 жыл бұрын
Спасибо !
@MAKSIM24251
@MAKSIM24251 3 жыл бұрын
14:11 поток-это объект внутри процесса. "потоки они крутые, они тратят меньше памяти чем процессы" это собственно к чему?
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 3 жыл бұрын
Макс, ну не барагозь. Давай я тебе объясню. Это к тому, что у разных процессов отдельная память.. Когда вы создаёте новый процесс вы имеете дополнительный расход памяти для каждого процесса (а если вы создадите сотни тысяч процессов?). Потоки же используют одну и туже память в рамках запустившего их процесса. Надеюсь теперь понятно.
@MAKSIM24251
@MAKSIM24251 3 жыл бұрын
@@ИванИванов-н9т9ъ это все понятно, но все же ключевой момент: без процессов потоков быть не может. поэтому так и не понял к чему эту фразу вставили…
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 3 жыл бұрын
@@MAKSIM24251 Речь идёт о двух альтернативах - о создании множества потоков или же о создании множества процессов. P. S. Даже пользовательский процесс (не то что поток) не может быть создан без основного процесса ОС.
@ИванИванов-н9т9ъ
@ИванИванов-н9т9ъ 3 жыл бұрын
@Max Gacrux Да и ещё могу предложить посмотреть серию видео по теме у Олега Молчанова "Асинхронность в Python". Если вникнешь, то сможешь глубже разобраться, и все это будет казаться менее магическим. Когда будешь смотреть в отладке, как работают примеры кода (некоторые примеры без этого наверное не понять), ставь брейкпоинткты в каждой функции и в разных местах (генераторе/сопрограмме), т. к. поток выполнения программы работает в асинхронном коде не так прямолинейно, как в синхронном. А потом посмотри 7 лекцию курса "Прикладной Python" (лектор Вадим Пуштаев).
@Ignat99Ignatov
@Ignat99Ignatov 4 жыл бұрын
Короче говоря на каждом процессоре реализация select разная. Где то она по принципу GIL устроена но на аппаратном уровне. Где то работает быстро, где то возникают конги от неправильной конфигурации. Поэтому если выкинуть весь Питон и библиотеки GCC и реализацию в Ядре Линукс и реализацию на уровне ASM без учета архитектуры и сделать все под конкретный новый чип (желательно прямо в железе), то все будет работать раз 10-100 быстрее. А select я использовал в 2000 году и у меня на обычном 486 компьютере 500 соединений в 1 секунду обслуживал один веб-сервер. Прошло 20 лет а воз и ныне там же.
@boobatrustahimmortal
@boobatrustahimmortal 2 жыл бұрын
Люблю таких специалистов. Разбираются поверхностно, но зато знают, что надо выкидывать. Свои знания лучше выкинь😂😂😂
@Ignat99Ignatov
@Ignat99Ignatov 2 жыл бұрын
@@boobatrustahimmortal Именно, если кроме Питона ни чего не знаете, ваше место, вероятно, на помойке истории. Как и многих "дата сайтсев". И всех выпускников ускоренных курсов "вай, вай тишников" и пи... от IT.
@smith-o6c
@smith-o6c 4 жыл бұрын
что за ад с 31 по 42 минуты для чего это?...
@wasp_qa
@wasp_qa 4 жыл бұрын
(не) случился спектр, о чем он?
@wadyn95
@wadyn95 4 жыл бұрын
Уязвимость Spectre ru.wikipedia.org/wiki/Spectre_(%D1%83%D1%8F%D0%B7%D0%B2%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C)
@Drak0sha13
@Drak0sha13 3 жыл бұрын
Мне больше понравился доклад Андрея Часовских собираем грабли. Там не так затянуто.
@pavel_trpn
@pavel_trpn 4 жыл бұрын
Дайте чуваку стакан воды
@l3VGV
@l3VGV 3 жыл бұрын
И отодвиньте микрофон от рта, подальше
@АнатолийИванов-й5щ9л
@АнатолийИванов-й5щ9л 3 жыл бұрын
По ядру неплохой материал это ostep
@ostrov11
@ostrov11 4 жыл бұрын
Жжжж Жук ))
@user-vg2np2si5k
@user-vg2np2si5k 2 жыл бұрын
Это чавкание, конечно, очень отвлекает
@5elll960
@5elll960 4 жыл бұрын
++
@Ignat99Ignatov
@Ignat99Ignatov 4 жыл бұрын
Алиллуя! Изобрели милениалы DOS 1.0 с драйверами и дискриптерами драйверов... Подождем еще немного - освоят ASM, потом еще подождать несколько лет и разберутся, наконец, с архитектурой процессора и встроенными контроллерами аппаратными и шинами.
@АристархЗловредович
@АристархЗловредович 4 жыл бұрын
гыгыг за шарпом повторяют,ваш питон фигня
@garrygaller2853
@garrygaller2853 3 жыл бұрын
А ты хоть знаешь с кого шарп все слизал? Нет? Ну так сиди тихо... гы-гы-гы
@АристархЗловредович
@АристархЗловредович 3 жыл бұрын
@@garrygaller2853 и у кого же?)
@garrygaller2853
@garrygaller2853 3 жыл бұрын
@@АристархЗловредович То есть поискать было не судьба? Из F# 2007-го года. А что касается разработчиков F#, то они, естественно, не пустом месте все придумали (сам F# - клон OCaml, если что): "According to Don Syme, on his blog (2007), F# async workflows take inspiration from the implementation of asynchronous monad for haskell. In particular Peng Li's paper (2007) and Koen Claessen's "A Poor Man's Concurrency Monad" paper (1999)". Сами же понятия coroutine, subroutine, легковесных потоков, мультизадачности еще более стары. Про корутины писал еще Кнут в 1958 году. Те или иные концепты асинхронного программирования были реализованы в ряде других языков про которые ты вряд ли что-то слышал... В 80-x - ADA. 1995 был LIMBO в котором также было реализовано concurrent programming, в в 2009 его идеи позаимствовал язык Go (впрочем, автор обоих языков один и тот же человек :-)). Кстати, асинхронное программирование на корутинах было в Python еще до введения ключевых слов async\await в 2015-м. В С++ их добавили только в 2020-м.... Фигня ваш С++, да? И чтобы ты знал, сейчас никого не волнует вопрос заимствования : это настолько естественный процесс, когда одни языки вбирают в себя концепции из других, что только школьники могут как-то странно реагировать на это.... (гы-гы-гы).
@АристархЗловредович
@АристархЗловредович 3 жыл бұрын
@@garrygaller2853 у тебя там стул не прожгло )) ты через чур серьезно все воспринимаешь,
@garrygaller2853
@garrygaller2853 3 жыл бұрын
@@АристархЗловредович У меня кресло. Непрожигаемое. Я воспринимаю все так, как оно того заслуживает. Не больше и не меньше.
@Ignat99Ignatov
@Ignat99Ignatov 4 жыл бұрын
Современные специалисты не изучали отличия архитектуры и реализации оператора С select в контексте конкретного процессора. С их слов выходит что ранее не было асинхронных библиотек, потому что предыдущее поколение программистов было не такое продвинутое как теперешнее. А все совсем наоборот. Раньше были хорошие программисты. А асинхронного програмирования не было, так как не было механизмов в микропроцессорах, которые дали бы выйгрыш с таким подходом. Но когда такие процессоры появились, не нашлось специалистов, которые быстро смогли воспользоваться такими изменениями внеся изменение во все основные языки и компиляторы (да да я знаю , они типа должны быть переносимы - то есть на Ардвино должны работать так же как на AMD под гипервизором). Во первых слишком сложные спецификации, например UTF-8 и другие протоколы, что не позволяет все это быстро переделать, а во вторых ни кто уже не знает языков низкого уровня. И тут уже появилось следствие этой ситуации, языки низкого уровня стали делать (в новых процессорах) по типу языков вернего уровня в ущерб общей логике аппаратной и архитектуре самих микропроцессорах. Так как ахитекторы микропроцессоров поняли, что настоящие программисты перевелись. На данный момент решение только одно - все реализовать аппаратно, а всех програмистов на Питоне переучить на дворников (которыми 50% и являются по своей сути) :-) пусть в реальном мире подметают и вычищают пространства. :-) Да жестоко, зато мусорых фреймворков не будет. Правда есть риск, получить мусор на улицах в реальном пространстве :-) Уверен, что бывшие мусорные программисты и на улице не смогут убрать мусор как следует.
@KARyzhkov
@KARyzhkov 4 жыл бұрын
как вы сюда попали, если вы такой продвинутый?
@Ignat99Ignatov
@Ignat99Ignatov 4 жыл бұрын
@@KARyzhkov Догадайтесь кто делал полицейскую систему с AI для отлова террористов в соц. сетях для основных полицейских офисов в Европе и паре офисов в Калифорнии и Израиле?
@KARyzhkov
@KARyzhkov 4 жыл бұрын
@@Ignat99Ignatov Вы не ответили на мой вопрос. Я, например, делаю первые шаги в программировании, поэтому я здесь...
@Ignat99Ignatov
@Ignat99Ignatov 4 жыл бұрын
@@KARyzhkov Я вам ответил на ваш вопрос на вашем канале, смотрите внимательно. А то ведете себя как пьяный интернет тролль. Вы так же на мой вопрос не ответили. Поэтому все ваши дальнейшие сообщения тут будут проигнорированы.
@АнатолийИванов-й5щ9л
@АнатолийИванов-й5щ9л 3 жыл бұрын
Бубубу, какие все тупые, бубубу, какие сложные спецификации понаделали тупые программисты, бубубу, догадайтесь какой токсик делал крутую систему по отлову бабушек на митингах. Слова, слова, слова. Если ты такой умный, то почему у тебя всего 42 подписчика?)
@Ignat99Ignatov
@Ignat99Ignatov 4 жыл бұрын
Ужастный доклад. Не знание русского языка. Использование английских слов (из за незнания русского языка). В докладе куча смыслового мусора, нет ссылки на гитхаб. Тупое решение - замена одного тупого фреймворка на другой тупой фреймворк. Единственное что было полезное в этом докладе это ссылка на другой адекватный доклад на языке, которым тот докладчик умеет пользоватся.
@АнатолийИванов-й5щ9л
@АнатолийИванов-й5щ9л 3 жыл бұрын
Токсик токсик где ты был?)
@АнатолийИванов-й5щ9л
@АнатолийИванов-й5щ9л 3 жыл бұрын
Радетель соблюдения правил русского языка за собой-то не проверил)
@АнатолийИванов-й5щ9л
@АнатолийИванов-й5щ9л 3 жыл бұрын
У меня с русским вообще труба, я насчитал целых 3 ошибки в тривиальном тексте, который имеет наглость критиковать других за отсутствие грамматики. Дожили. Напиши в железе спелчекер себе на ассемблере. Если ненравится слово спелчекер, то напиши проверятельошибок
@австриец
@австриец 2 жыл бұрын
>Тупое решение - замена одного тупого фреймворка на другой тупой фреймворк. Тут цель доклада не дать решение а просто рассказать про тему, чтобы зритель имел более глубокое понимание
@nckph0n0v11
@nckph0n0v11 2 жыл бұрын
Звук сушняка докладчика..
Don’t Choose The Wrong Box 😱
00:41
Topper Guild
Рет қаралды 62 МЛН
Каха и дочка
00:28
К-Media
Рет қаралды 3,4 МЛН
08. Алгоритмы - Илья Волков
2:10:28
Yandex for Developers
Рет қаралды 30 М.
Kotlin Multiplatform vs Flutter: Which should we use?
4:42
Kei Fujikawa
Рет қаралды 27 М.
Asyncio и асинхронное программирование | Python 3, Питон 3
41:01
Андрей Иванов | Python
Рет қаралды 38 М.
02. ООП - Валерий Лисай
1:39:07
Yandex for Developers
Рет қаралды 44 М.
ЧТО ТАКОЕ ВРЕМЯ? ИЛЛЮЗИЯ ИЛИ РЕАЛЬНОСТЬ?
51:48
ВЕЛИКОХАТСКИЙ | НАУКА
Рет қаралды 26 М.