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

Ғылым және технология

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

Пікірлер: 63

  • @EugeneErmolov
    @EugeneErmolov4 жыл бұрын

    Прямо приятное и простое объяснение async/await. Спасибо Эдуарду, что съекономил время на Beazley

  • @benyomin94
    @benyomin944 жыл бұрын

    Отличнейший доклад просто, харизма автора так и прет Спасибо!

  • @user-od5bu5mv9h
    @user-od5bu5mv9h Жыл бұрын

    Отличная лекция. Автор молодец, очень энергичный, с чувством юмора и умеет подать материал

  • @user-qp7uv2ip7x
    @user-qp7uv2ip7x Жыл бұрын

    Очень востребованная тема, хороший доклад. Автору - спасибо.

  • @FoodMaks
    @FoodMaks3 жыл бұрын

    Очень крутой и внятный доклад. Спасибо большое

  • @yodapunishes
    @yodapunishes4 жыл бұрын

    Потрясающая лекция!

  • @antonkot6250
    @antonkot62503 жыл бұрын

    Спасибо за отличную лекцию. Сам то я джавист, но убедили попробовать Spring Reactor =)

  • @silicodance
    @silicodance Жыл бұрын

    Офигеть, я так-же интуитивно делал эти колбэки и цикл событий в микроконтроллерных прошивках на Си, и отдельные колбэки для ошибок, и даже не подозревал, что это так где-то ещё делается и не знал что оно так называется)

  • @samharrison7791
    @samharrison77912 жыл бұрын

    Самый крутой лектор из всех!

  • @KirillKravitz
    @KirillKravitz4 жыл бұрын

    Спасибо. С удовольствием посмотрел. Из за карантина немного странно видеть людей, сидящих менее 2х метров друг от друга =)))

  • @TheRevengencer7Sc

    @TheRevengencer7Sc

    4 жыл бұрын

    это записи с 2019 года

  • @KirillKravitz

    @KirillKravitz

    4 жыл бұрын

    @@TheRevengencer7Sc эт понятно то

  • @user-jd2jk1mx7s

    @user-jd2jk1mx7s

    3 жыл бұрын

    ты просто в карантин в Москве на метро и маршрутках не ездил, тогда бы понял, что все на этот карантин болт ложат большой, ну кроме мусоров, конечно, тем-то штрафовать надо, бабосики стричь.

  • @dmitrys5289
    @dmitrys5289 Жыл бұрын

    Видишь сервер? Нет. И я не вижу, а он есть))) А вообще отличная лекция

  • @viacheslavfeno1475
    @viacheslavfeno14753 жыл бұрын

    Это божественно.

  • @non5309
    @non53098 ай бұрын

    Ссылку в чатик с пайкона где 2-х часовая версия вместо 4-х видимо не кинули?

  • @bloodielie7280
    @bloodielie72804 жыл бұрын

    Спасибо !

  • @jeromewicks3896
    @jeromewicks38963 жыл бұрын

    19:58, вообще-то мы хотим обрабатывать несколько запросов НЕЗАВИСИМО, а не одновременно (хотя не исключаем это). Это вопрос про concurrency vs parallelism. Кому интересно можете глянуть лекцию Роба Пайка "Concurrency is not parallelism"

  • @vladimirshitov2160
    @vladimirshitov21603 жыл бұрын

    А что плохого в том, что Инстаграм использует джанго? Или речь о том, что джанго не поддерживал асинхронное программирование?

  • @NickRossik

    @NickRossik

    3 жыл бұрын

    Джанго - легаси без асинка. Не знаю как сейчас, а год-два назад некоторые модули были написаны на python2.

  • @senioreasy
    @senioreasy3 жыл бұрын

    Не плохо было бы указать в теме, что примеры на "питоне". Я на плюсах пишу, и лекция интересна постольку поскольку

  • @user-ny1jm3sf7t
    @user-ny1jm3sf7t3 жыл бұрын

    По ядру неплохой материал это ostep

  • @user-gn7gi2zz9k
    @user-gn7gi2zz9k3 жыл бұрын

    что за ад с 31 по 42 минуты для чего это?...

  • @wasp_qa
    @wasp_qa4 жыл бұрын

    (не) случился спектр, о чем он?

  • @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)

  • @ostrov11
    @ostrov114 жыл бұрын

    Жжжж Жук ))

  • @Drak0sha13
    @Drak0sha132 жыл бұрын

    Мне больше понравился доклад Андрея Часовских собираем грабли. Там не так затянуто.

  • @pavel_trpn
    @pavel_trpn4 жыл бұрын

    Дайте чуваку стакан воды

  • @l3VGV

    @l3VGV

    3 жыл бұрын

    И отодвиньте микрофон от рта, подальше

  • @Ignat99Ignatov
    @Ignat99Ignatov3 жыл бұрын

    Короче говоря на каждом процессоре реализация select разная. Где то она по принципу GIL устроена но на аппаратном уровне. Где то работает быстро, где то возникают конги от неправильной конфигурации. Поэтому если выкинуть весь Питон и библиотеки GCC и реализацию в Ядре Линукс и реализацию на уровне ASM без учета архитектуры и сделать все под конкретный новый чип (желательно прямо в железе), то все будет работать раз 10-100 быстрее. А select я использовал в 2000 году и у меня на обычном 486 компьютере 500 соединений в 1 секунду обслуживал один веб-сервер. Прошло 20 лет а воз и ныне там же.

  • @boobatrustahimmortal

    @boobatrustahimmortal

    2 жыл бұрын

    Люблю таких специалистов. Разбираются поверхностно, но зато знают, что надо выкидывать. Свои знания лучше выкинь😂😂😂

  • @Ignat99Ignatov

    @Ignat99Ignatov

    2 жыл бұрын

    @@boobatrustahimmortal Именно, если кроме Питона ни чего не знаете, ваше место, вероятно, на помойке истории. Как и многих "дата сайтсев". И всех выпускников ускоренных курсов "вай, вай тишников" и пи... от IT.

  • @5elll960
    @5elll9604 жыл бұрын

    ++

  • @user-vg2np2si5k
    @user-vg2np2si5k2 жыл бұрын

    Это чавкание, конечно, очень отвлекает

  • @MAKSIM24251
    @MAKSIM242513 жыл бұрын

    14:11 поток-это объект внутри процесса. "потоки они крутые, они тратят меньше памяти чем процессы" это собственно к чему?

  • @user-oi1zl6de8i

    @user-oi1zl6de8i

    2 жыл бұрын

    Макс, ну не барагозь. Давай я тебе объясню. Это к тому, что у разных процессов отдельная память.. Когда вы создаёте новый процесс вы имеете дополнительный расход памяти для каждого процесса (а если вы создадите сотни тысяч процессов?). Потоки же используют одну и туже память в рамках запустившего их процесса. Надеюсь теперь понятно.

  • @MAKSIM24251

    @MAKSIM24251

    2 жыл бұрын

    @@user-oi1zl6de8i это все понятно, но все же ключевой момент: без процессов потоков быть не может. поэтому так и не понял к чему эту фразу вставили…

  • @user-oi1zl6de8i

    @user-oi1zl6de8i

    2 жыл бұрын

    @@MAKSIM24251 Речь идёт о двух альтернативах - о создании множества потоков или же о создании множества процессов. P. S. Даже пользовательский процесс (не то что поток) не может быть создан без основного процесса ОС.

  • @user-oi1zl6de8i

    @user-oi1zl6de8i

    2 жыл бұрын

    @Max Gacrux Да и ещё могу предложить посмотреть серию видео по теме у Олега Молчанова "Асинхронность в Python". Если вникнешь, то сможешь глубже разобраться, и все это будет казаться менее магическим. Когда будешь смотреть в отладке, как работают примеры кода (некоторые примеры без этого наверное не понять), ставь брейкпоинткты в каждой функции и в разных местах (генераторе/сопрограмме), т. к. поток выполнения программы работает в асинхронном коде не так прямолинейно, как в синхронном. А потом посмотри 7 лекцию курса "Прикладной Python" (лектор Вадим Пуштаев).

  • @Ignat99Ignatov
    @Ignat99Ignatov3 жыл бұрын

    Алиллуя! Изобрели милениалы DOS 1.0 с драйверами и дискриптерами драйверов... Подождем еще немного - освоят ASM, потом еще подождать несколько лет и разберутся, наконец, с архитектурой процессора и встроенными контроллерами аппаратными и шинами.

  • @user-bd3ij4op5k
    @user-bd3ij4op5k3 жыл бұрын

    гыгыг за шарпом повторяют,ваш питон фигня

  • @garrygaller2853

    @garrygaller2853

    2 жыл бұрын

    А ты хоть знаешь с кого шарп все слизал? Нет? Ну так сиди тихо... гы-гы-гы

  • @user-bd3ij4op5k

    @user-bd3ij4op5k

    2 жыл бұрын

    @@garrygaller2853 и у кого же?)

  • @garrygaller2853

    @garrygaller2853

    2 жыл бұрын

    @@user-bd3ij4op5k То есть поискать было не судьба? Из 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-м.... Фигня ваш С++, да? И чтобы ты знал, сейчас никого не волнует вопрос заимствования : это настолько естественный процесс, когда одни языки вбирают в себя концепции из других, что только школьники могут как-то странно реагировать на это.... (гы-гы-гы).

  • @user-bd3ij4op5k

    @user-bd3ij4op5k

    2 жыл бұрын

    @@garrygaller2853 у тебя там стул не прожгло )) ты через чур серьезно все воспринимаешь,

  • @garrygaller2853

    @garrygaller2853

    2 жыл бұрын

    @@user-bd3ij4op5k У меня кресло. Непрожигаемое. Я воспринимаю все так, как оно того заслуживает. Не больше и не меньше.

  • @Ignat99Ignatov
    @Ignat99Ignatov3 жыл бұрын

    Современные специалисты не изучали отличия архитектуры и реализации оператора С select в контексте конкретного процессора. С их слов выходит что ранее не было асинхронных библиотек, потому что предыдущее поколение программистов было не такое продвинутое как теперешнее. А все совсем наоборот. Раньше были хорошие программисты. А асинхронного програмирования не было, так как не было механизмов в микропроцессорах, которые дали бы выйгрыш с таким подходом. Но когда такие процессоры появились, не нашлось специалистов, которые быстро смогли воспользоваться такими изменениями внеся изменение во все основные языки и компиляторы (да да я знаю , они типа должны быть переносимы - то есть на Ардвино должны работать так же как на AMD под гипервизором). Во первых слишком сложные спецификации, например UTF-8 и другие протоколы, что не позволяет все это быстро переделать, а во вторых ни кто уже не знает языков низкого уровня. И тут уже появилось следствие этой ситуации, языки низкого уровня стали делать (в новых процессорах) по типу языков вернего уровня в ущерб общей логике аппаратной и архитектуре самих микропроцессорах. Так как ахитекторы микропроцессоров поняли, что настоящие программисты перевелись. На данный момент решение только одно - все реализовать аппаратно, а всех програмистов на Питоне переучить на дворников (которыми 50% и являются по своей сути) :-) пусть в реальном мире подметают и вычищают пространства. :-) Да жестоко, зато мусорых фреймворков не будет. Правда есть риск, получить мусор на улицах в реальном пространстве :-) Уверен, что бывшие мусорные программисты и на улице не смогут убрать мусор как следует.

  • @KARyzhkov

    @KARyzhkov

    3 жыл бұрын

    как вы сюда попали, если вы такой продвинутый?

  • @Ignat99Ignatov

    @Ignat99Ignatov

    3 жыл бұрын

    @@KARyzhkov Догадайтесь кто делал полицейскую систему с AI для отлова террористов в соц. сетях для основных полицейских офисов в Европе и паре офисов в Калифорнии и Израиле?

  • @KARyzhkov

    @KARyzhkov

    3 жыл бұрын

    @@Ignat99Ignatov Вы не ответили на мой вопрос. Я, например, делаю первые шаги в программировании, поэтому я здесь...

  • @Ignat99Ignatov

    @Ignat99Ignatov

    3 жыл бұрын

    @@KARyzhkov Я вам ответил на ваш вопрос на вашем канале, смотрите внимательно. А то ведете себя как пьяный интернет тролль. Вы так же на мой вопрос не ответили. Поэтому все ваши дальнейшие сообщения тут будут проигнорированы.

  • @user-ny1jm3sf7t

    @user-ny1jm3sf7t

    3 жыл бұрын

    Бубубу, какие все тупые, бубубу, какие сложные спецификации понаделали тупые программисты, бубубу, догадайтесь какой токсик делал крутую систему по отлову бабушек на митингах. Слова, слова, слова. Если ты такой умный, то почему у тебя всего 42 подписчика?)

  • @Ignat99Ignatov
    @Ignat99Ignatov3 жыл бұрын

    Ужастный доклад. Не знание русского языка. Использование английских слов (из за незнания русского языка). В докладе куча смыслового мусора, нет ссылки на гитхаб. Тупое решение - замена одного тупого фреймворка на другой тупой фреймворк. Единственное что было полезное в этом докладе это ссылка на другой адекватный доклад на языке, которым тот докладчик умеет пользоватся.

  • @user-ny1jm3sf7t

    @user-ny1jm3sf7t

    3 жыл бұрын

    Токсик токсик где ты был?)

  • @user-ny1jm3sf7t

    @user-ny1jm3sf7t

    3 жыл бұрын

    Радетель соблюдения правил русского языка за собой-то не проверил)

  • @user-ny1jm3sf7t

    @user-ny1jm3sf7t

    3 жыл бұрын

    У меня с русским вообще труба, я насчитал целых 3 ошибки в тривиальном тексте, который имеет наглость критиковать других за отсутствие грамматики. Дожили. Напиши в железе спелчекер себе на ассемблере. Если ненравится слово спелчекер, то напиши проверятельошибок

  • @konstantinsolkin487

    @konstantinsolkin487

    Жыл бұрын

    >Тупое решение - замена одного тупого фреймворка на другой тупой фреймворк. Тут цель доклада не дать решение а просто рассказать про тему, чтобы зритель имел более глубокое понимание

  • @nckph0n0v11
    @nckph0n0v11 Жыл бұрын

    Звук сушняка докладчика..

Келесі