Многопроцессность, многопоточность, асинхронность в Python и не только. Что это и как работает?

  Переглядів 141,625

Диджитализируй!

Диджитализируй!

День тому

Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digitalize.team
Сегодняшний выпуск - о том, как заставить наше приложение летать! Поговорим о процессорах, о том, как они работают, о многоядерных CPU и Hyper-Threading, о процессах, потоках и многопоточности, а также об асинхронности или кооперативной многозадачности. Будет насыщенно!
0:00 О чём пойдёт речь
0:30 О многозадачности на единственном ядре CPU
1:42 О тактовой частоте процессоров и многоядерных CPU
3:07 Потоки, они же Threads
4:26 Состояние гонки, оно же race condition
5:20 Hyper-Threading и гипер-потоки
7:56 Потоки на многоядерных CPU
8:24 GIL в Python
9:16 Как обслужить тысячу HTTP запросов?
10:09 Асинхронность, кооперативная многозадачность
14:20 Как работает асинхронность
15:31 Выводы
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

КОМЕНТАРІ: 734
@t0digital
@t0digital 4 місяці тому
Мой курс «Хардкорная веб-разработка» - course.to.digital Вжух!
@MrVindor
@MrVindor 3 роки тому
Спасибо за видео! Важная тема, давно жду ее)
@79fz270704
@79fz270704 3 роки тому
Тема интересная, ждем продолжения.
@user-ik1in6zt4y
@user-ik1in6zt4y 3 роки тому
Благодарю за ваш труд!
@RuchejAlex
@RuchejAlex 3 роки тому
Сделаю паузу и скажу. Когда увлекался своим ZX-Spectrum-ом, изучал ассемблер. Благодаря этому, не плохо понимаю тему прерываний, т.к. там это было оооочень хорошо видно. Изначально, на zx работает только одна прога. По учебнику, делал на машинных кодах часы, которые работали в фоне в системе. Для это создаётся прерывание, у которого есть свой номер, как сейчас сказали бы, свой ID. Когда сделал эти часы, которые висят и не пропадают, был в восторге)
@quasar-lv6pp
@quasar-lv6pp 3 роки тому
А по какому учебнику учился? Интересно, т.к. сам на спектруме ассемблер познавал в 90-х
@vryaboshapko
@vryaboshapko 3 роки тому
У меня было наоборот: понимание устройства event loop помогло разобраться с прерываниями на ардуино)))
@Enerdzizer
@Enerdzizer 3 роки тому
Господа,а можно поподробнее про прерывания? Прерывание разве можно создавать? Прерывания в zx spectrum это аналог программы или это всё таки ближе к callback функции?
@RuchejAlex
@RuchejAlex 3 роки тому
@@Enerdzizer в спектруме, прерывание задаётся в каком-то регистре и вроде указывается адрес перехода. Уже не помню
@Emagnarium
@Emagnarium 3 роки тому
Спасибо за ликбез по мультипоточности ядер) "Немножко" дополню/скорректирую в режиме зануды: 1:00 Процесс и поток на процессоре может быть один, когда нет ОС. Это кучу МК (микроконтроллеров) и им подобных процов. Даже на х86 можно запустить монопроцесс и, обычно, вы его пускаете. BIOS Based I/O system не редко однопоточна+однопроцессна (но может мои данные устарели) 1:20 я бы прям в начале уточнил разницу между "работает" и "выполняется" ("исполняется"). Состояния ожидания тоже работа (это вам не зомби) и одновременно реально работать без переключений могут сотни процессов, а вот с выполнением да, только один в один фрейм исполнения. Хотя кому-то наоборот "программа исполняется" это существование процесса, а "программа работает" это греет воздух, трасформируя данные 3:20 строго говоря у программы может быть и 0 (ноль) потоков/процессов. Пример -- скрипты, которые не оперируют потоками/процессами, а исполняются родительским интерпретатором. 3:40 программа != процесс, 4:00 потоки так-то бывают разные и на сколько я знаю у потоков могут быть свои адресные пространства, но не уверен. Надо изучить что в каких ОС 4:36 гонки потоков можно, как избегать рядом подходов в мультипоточном прог-ии, так и исключать, так что проблема не совсем понятно, зачем сюда внесена, но при этом даже о законе Абеля ни слова( Часть про простаивающие ядра оставляю на совести автора, там у меня нет знаний, за тем и смотрел =) 12:43 асинхронность, а точнее асихронное программирование либо асихронное выполнение это *один из* способов решить проблему, как достичь большой отдачи на малом числе ядер/потоков. В принципе можно и 10к дескрипторов потоков создать и нихай ОС сама их рулит, если поток умеет переходить в ожидание, то даже разрулит) 14:10 высокоэффективные ли? Если замерять RPS, то с высокой верятностью при идентичной задаче JS можно отточить не лучше питона, тот не лучше явы (иногда питон быстрее даже правильно "сваренной" явы), а эти ребята всё равно уступят Go/RUST/C++/Fortran (я счас о пределе, который можно выжать, а не о качестве библиотек, которые делают разрыв обычно ещё сильнее) Эффективно на тех же JS/Python писать ёмкий код (мало строк, много логики и смысла), но тут ни JIT, ни процессоры, ни ОС ни при чём 14:50 это упрощение сродни Пи = 3, простите. EL исполняет задачи из очереди на исполнение по мере завершения исполнения текущих задач (в частности для JS это по одной задаче), а задачи, завершаемые не выходом, а переходом в ожидание, по мере удовлетворения ожидания, перекладывает в очередь ожидания и взятием из очереди на исполнение следующей задачи На этом всё, надеюсь уточнения кто-то дочитает, а не в в воздух это...
@danilakim5126
@danilakim5126 Рік тому
Немного сложновато, хотелось бы увидеть это ПРЯМ НА РЕАЛЬНОМ ПРИМЕРЕ! Прям наглядно увидеть многопоточность, сам ПОТОК/ПРОЦЕСС. Вот есть компьютер, и что мне делать чтобы увидеть этот поток, процесс?! Запустить программу что-ли? (Понятное дело что и сама ос что-то да выполняет, но как увидеть ожидание процесса, как увидеть что работает многопоточность НА РЕАЛЬНОМ ПРИМЕРЕ?!) МОЖЕТ МОЖНО ПРОГРАММУ НАПИСАТЬ И НАГЛЯДНО УВИДЕТЬ?!? Подскажите пожалуйста, буду благодарен!
@Emagnarium
@Emagnarium Рік тому
​@@danilakim5126 простейший варик: запускаете live-образ линукс-based (проще говоря убунты), ставите там htop, запускаете его. Там можно наглядно увидеть нити (posix-based threads, по-нашему потоки) и их родительские процессы. Можно изучить и препарировать их, если будет желание. Ещё вариант тот же Process Explorer вместо классического Task Manager виндового способен показать потоки виндовых процессов (не моя специфика, не знаю на сколько глубоко там можно копать) А так, на хабре том же найти реально)
@captainkryuk1899
@captainkryuk1899 9 місяців тому
Братан ты бы вышел на улицу воздухом подышал, пивка попил
@mrMarseleene
@mrMarseleene 3 роки тому
Как же приятно тебя слушать! Спасибо и удачи в развитии!
@myroslavzadoian4549
@myroslavzadoian4549 3 роки тому
Ждём следующее видео! Тема очень интересная, интересно услышать твои мысли!
@t0digital
@t0digital 3 роки тому
Спасибо!
@toomanof
@toomanof 3 роки тому
Продолжай в тоже духе! Хороших лекторов не так уж много!
@t0digital
@t0digital 3 роки тому
Спасибо!
@zavserj
@zavserj Рік тому
ukposts.infoHpwZpcfOxto?feature=share
@SueBeatMaker
@SueBeatMaker 9 місяців тому
@@t0digital Поддерживаю
@FILA2209
@FILA2209 3 роки тому
Круто! Все очень доступно и понятно изложено! Спасибо!
@user-ek3gb9sf6y
@user-ek3gb9sf6y 8 місяців тому
Спасибо за подробное и понятное описание!
@ZHeKKa
@ZHeKKa 3 роки тому
Спасибо за разъяснение такой интересной, непростой, но важной темы.
@daniilpopkov4176
@daniilpopkov4176 3 роки тому
Благодарю, Вас, за труд!
@yaroslavnovichkov6736
@yaroslavnovichkov6736 2 роки тому
Большое спасибо за ролик!
@user-yr7qn1dt5t
@user-yr7qn1dt5t 3 роки тому
Спасибо за ваш контент!
@RaZeR22L
@RaZeR22L 3 роки тому
Спасибо за видео!
@constkk3153
@constkk3153 Рік тому
Спасибо за интересное видео!
@MS-fu3zf
@MS-fu3zf 3 роки тому
Здорово. Отличный ввод в многопоточность и асинхронность. Спасибо.
@t0digital
@t0digital 3 роки тому
Рад, что полезно!
@kostya8877
@kostya8877 3 роки тому
Просто лучшее объяснение из всех, что я смотрел, все четко и структурированно. Спасибо огромное!
@Python2061
@Python2061 3 роки тому
Без лишней воды. Спасибо огромное за такие ценные рассуждения.
@user-bi9sd6ly8h
@user-bi9sd6ly8h Рік тому
Спасибо за классное изложение материала!
@user-vo6tn6vu1h
@user-vo6tn6vu1h Рік тому
Без лишней воды. Спасибо огромное за инфо.
@Dastan1910
@Dastan1910 2 роки тому
Спасибо большое, теперь наконец-то стало понятно! )
@user-it3lh7zg4n
@user-it3lh7zg4n 3 роки тому
спасибо большое за простое но в то же время содержательное видео!
@scadeline805
@scadeline805 Рік тому
офигенное видео! Рахмет большой
@dima_ivanov_ca
@dima_ivanov_ca 3 роки тому
Спасибо! Очень полезно!
@user-uk4zv3hb2u
@user-uk4zv3hb2u 3 роки тому
Спасибо за понятное изложение темы
@user-dc9jh3hq9d
@user-dc9jh3hq9d 3 роки тому
Отлично! Благодарю!
@vasiliydrogovozov4285
@vasiliydrogovozov4285 Рік тому
Круто, спасибо большое!)))
@SemyonKalyakulin
@SemyonKalyakulin 2 роки тому
Спасибо! Очень доходчивое объяснение)
@thequarkie
@thequarkie 3 роки тому
Отличное видео, спасибо!
@dmitrikamenev7677
@dmitrikamenev7677 Рік тому
Огромное спасибо!!!
@volfsonic
@volfsonic 2 роки тому
Благодаря таким авторам, хочется изучать тему. Спасибо! Смотрим дальше
@Konushbai
@Konushbai Місяць тому
Спасибо! Ждем больше примеров на практике
@tanks-blitz-shorts
@tanks-blitz-shorts 3 роки тому
Спасибо огромное за это видео, все четко объяснил ))
@user-js8ig2en8e
@user-js8ig2en8e 3 роки тому
Алексей! Спасибо за ваши видео! Почаще бы.
@Pumba053
@Pumba053 3 роки тому
Спасибо за хороший материал, очень доступно для начинающих!
@sergekozlov9876
@sergekozlov9876 3 роки тому
Спасибо большое, ждём продолжения
@t0digital
@t0digital 3 роки тому
спасибо, скоро продолжение, на бусти уже кое-что есть:)
@user-rc4kq3eb7r
@user-rc4kq3eb7r 3 роки тому
Спасибо. Круто объясняешь!
@HeyArtem
@HeyArtem Рік тому
Спасибо за информацию. Легко и интересно слушать. То что искал!
@bagasayn
@bagasayn 3 роки тому
Супер, самая не скучная лекция :)
@narekbektashyan
@narekbektashyan 3 роки тому
Супер тема, спасибо!
@jorupbek
@jorupbek 3 роки тому
Спасибо огромное за Ваши труды. Очень интересно и понятно)
@t0digital
@t0digital 3 роки тому
Спасибооо!
@mishaorlov7364
@mishaorlov7364 3 роки тому
Спасибо, интересно просто и доступно
@frx1692
@frx1692 2 роки тому
Спасибо большое за ваши поучительные материалы
@sevashpun
@sevashpun 3 роки тому
Спасибо большое!
@user-zc5lk2fv9r
@user-zc5lk2fv9r 3 роки тому
Круто! Спасибо
@tonyp4826
@tonyp4826 Рік тому
Супер! Как раз по чуть чуть нахватал и так удачно залетел на это видео! Спокойно четко понятно. Спасибо.
@FillerWorld
@FillerWorld 3 роки тому
Всё предельно ясно и по полочкам, спасибо большое!
@t0digital
@t0digital 3 роки тому
Рад, что полезно! Спасибо!
@777777Philipp
@777777Philipp 2 роки тому
Супер! Очень интересно и доходчиво
@user-sl9rx1wz9p
@user-sl9rx1wz9p 3 роки тому
Спасибо, отличное видео, многое для себя понял)
@user-lz3ez3nn4j
@user-lz3ez3nn4j 3 роки тому
Отличный канал, благодарю
@webxcryptoit7308
@webxcryptoit7308 Рік тому
Все очень круто, отличный формат и подача! Спасибо, большое!
@t0digital
@t0digital Рік тому
Спасибооо!
@Deiffify
@Deiffify Рік тому
Отличное видео! Очень понятно и четко! Благодарю
@vladimirkirdan
@vladimirkirdan Рік тому
Ты очень круто всё объясняешь! Очень нравится структура твоих видео! Нет никакой воды из разряда «что бы установить пакет, используйте пип инсталл…» но в тоже время нет «эээ ну тут просто переписываете ядро». Всё очень понятно, доступная информация
@dimilian4719
@dimilian4719 3 роки тому
Спасибо за каждое видео, очень приятно слушать и смотреть! И темы всегда прям то, что надо!
@zavserj
@zavserj Рік тому
ukposts.infoHpwZpcfOxto?feature=share
@zavserj
@zavserj Рік тому
ukposts.infoHpwZpcfOxto?feature=share
@zeman8748
@zeman8748 3 роки тому
Спасибо, реально помог разобраться)
@VictorPriyma
@VictorPriyma 3 роки тому
Благодарю за то, что вы делаете!!!!
@t0digital
@t0digital 3 роки тому
Спасибо! Будем продолжать
@lalalf4535
@lalalf4535 3 роки тому
Спасибо за видеоурок. Очень интересно посмотреть разбор темы с кодом
@user-cl2cj6jl9u
@user-cl2cj6jl9u 9 місяців тому
Доходчивое объяснение. Интересно слушать. Благодарю 🌈
@user-yp8mw9yv1k
@user-yp8mw9yv1k 2 роки тому
Очень доходчиво!
@limonred5283
@limonred5283 3 роки тому
Круто. То что доктор прописал!
@devopsflow707
@devopsflow707 2 роки тому
четенько, спасибо!
@user-so1rr2is7b
@user-so1rr2is7b 3 роки тому
Классно интересно оч жду следующего видео
@Deiffify
@Deiffify Рік тому
Супер разложил! На пальцах) благодарю за труды😊
@user-rp5wg1cw1w
@user-rp5wg1cw1w 3 роки тому
Самое чёткое и ясное введение в тему какое только встречал!
@radiksaiakhfarov4794
@radiksaiakhfarov4794 3 роки тому
Ждём продолжения!)
@t0digital
@t0digital 3 роки тому
Спасибо! Скоро будет продолжение
@understandwhat
@understandwhat 10 місяців тому
очень полезно, спасибо!
@mgm_smile
@mgm_smile 3 роки тому
Отличное видео! Жду продолжения =)
@t0digital
@t0digital 3 роки тому
Скоро будет:)
@MrDimka12101
@MrDimka12101 3 роки тому
Тема действительно интересная и важная. Я лично с ней столкнулся, когда нужно было обрабатывать запрос на вызов предсказательной модели (что не быстро). Надеюсь услышать в следующем видео какие-либо лучшие практики на этот счёт!
@user-cn5pd6do9n
@user-cn5pd6do9n 3 роки тому
Интересно, ждём продолжения
@t0digital
@t0digital 3 роки тому
Спасибо! Продолжение будет
@psychicks3463
@psychicks3463 Рік тому
Очень интересно рассказываете)
@alexandershurakoff9506
@alexandershurakoff9506 2 роки тому
Клевое видео для погружения в тему!
@sptica
@sptica Рік тому
Отлично расказано, спасибо!
@dalerkhalilov9440
@dalerkhalilov9440 3 роки тому
Спасибо! Отличную тему затронули, надеюсь будет продолжение. 🙏
@t0digital
@t0digital 3 роки тому
Будет обязательно!
@abduaziz.ilhomov
@abduaziz.ilhomov 2 роки тому
очен важная тема, спасибо за видос
@alexanderthegreat489
@alexanderthegreat489 3 роки тому
Спасибо за видео! Очень интересно и хочется побольше примеров и практики))
@t0digital
@t0digital 3 роки тому
Да, в следующих видео будут примеры и практика
@user-rg6gi5ve1g
@user-rg6gi5ve1g 2 роки тому
Спасибо , надеюсь разберусь в теме асинхронности с нуля до полного понимания благодаря вашим роликам. Перехожу к следующему )
@olegkolesnik7710
@olegkolesnik7710 3 роки тому
Доступно!
@egoruzh
@egoruzh 3 роки тому
Интересные все видео. Спасибо. Много полезного, без понтов, доступно и профессионально.
@t0digital
@t0digital 3 роки тому
Спасибо! Рад, что полезно
@user-ck7qb6qu7u
@user-ck7qb6qu7u 3 роки тому
Очень крутой материал!
@user-fu8jr9if5f
@user-fu8jr9if5f 2 роки тому
Ждем продолжение
@vladyslavstetsenko2655
@vladyslavstetsenko2655 3 роки тому
Ждём продолжения!
@t0digital
@t0digital 3 роки тому
Скоро будет:)
@dmitryreznik4058
@dmitryreznik4058 Рік тому
Спасибо. четко и понятно
@makaronronron
@makaronronron 3 роки тому
Очень круто! Выпускай почаще видео с ликбезом. Очень люблю за завтраком включить и послушать сжато полезную инфу.
@jamalzeynalov2196
@jamalzeynalov2196 3 роки тому
Очень полезное видео. Лайк
@avorion-ru
@avorion-ru 2 роки тому
Ну наконец то нашел нормальное объяснение, спасибо Вам огромное!!
@andyanderson222
@andyanderson222 2 роки тому
Спасибо! Очень чёткое объяснение.
@Dmitrii-Zhinzhilov
@Dmitrii-Zhinzhilov Рік тому
Благодарю!
@nemirovandrei
@nemirovandrei 3 роки тому
Хорошо рассказал, спасибо!
@t0digital
@t0digital 3 роки тому
Спасибо, рад, что понравилось!
@user-pd8id7ub6g
@user-pd8id7ub6g 3 роки тому
Просто красавчик!
@lavrlad
@lavrlad 3 роки тому
Полугодовой предмет ВУЗа в 16 минутах, понятным языком. Вот что значит Питонист вещает)
@romanwednesday4401
@romanwednesday4401 3 роки тому
Ну это всего лишь вводный материал, хотя и достаточно качественный. В ВУЗ-ах часто смотрят более углубленно в проблемы и применения многопоточности, асинхронности(Если это нормальный ВУЗ с хорошим преподавательским составом). Не стоит полностью обесценивать знания которые дает учебное заведение, если оно хорошее(а студент нет). Обидно, если за пол года в учебном заведении тебе действительно рассказали только эти вещи. Такие вузы я называю шарагами
@zavserj
@zavserj Рік тому
ukposts.infoHpwZpcfOxto?feature=share
@SyperMonster
@SyperMonster 3 місяці тому
​@@romanwednesday4401шёл 2024, похоже остались одни шараги)
@aelloro
@aelloro Рік тому
Спасибище! Оч полезно!
@DP_AS
@DP_AS 8 днів тому
Спасибо! Вы отлично объясняете! Ценный материал!
@dmplet
@dmplet 2 роки тому
Большое спасибо за твою работу! Очень полезная информация.
@t0digital
@t0digital 2 роки тому
Спасибо! Рад, что полезно!
@MrAlexMonk
@MrAlexMonk 3 роки тому
спасибо за труд! все понятно и доступно
@t0digital
@t0digital 3 роки тому
Рад, что полезно! Спасибо!
@Zhekazhe1
@Zhekazhe1 3 роки тому
Понятно и познавательно. Спасибо за полезную информацию!
@t0digital
@t0digital 3 роки тому
Рад, что полезно!
@captainkryuk1899
@captainkryuk1899 3 роки тому
Все круто и интересно
@anti_middle_ages
@anti_middle_ages 2 роки тому
Спасибо. Интересно
@bandirom
@bandirom 3 роки тому
👍👍👍👍👍👍 интересно было послушать)
Философия и практика Obsidian - организация знаний и жизни
1:26:32
🐩🐕
00:25
Янчик
Переглядів 2,3 млн
10 Minutes To Escape Or This Room Explodes!
10:00
MrBeast
Переглядів 64 млн
Про базовый фундамент в разработке веб-приложений
10:52
Thread → Task. Многопоточность и Асинхронность
13:39
Архитектор ПО. Александр Желнин
Переглядів 25 тис.
Введение в процессы и потоки
49:53
Денис Бречка
Переглядів 2,2 тис.
C++ Разработчик учит Python
28:01
Winderton
Переглядів 458 тис.
Android - Потоки и асинхронность
2:33:14
Yandex for Developers
Переглядів 11 тис.
ЛОГИКА ПРОЦЕССОРА | Магия многопоточности
17:29
Мой Компьютер
Переглядів 116 тис.
Асинхронность в McDonalds и Python
6:20
Диджитализируй!
Переглядів 38 тис.
GIL в Python: зачем он нужен и как с этим жить
56:24
Конкурентность и параллельность
40:31
Python Russian
Переглядів 4,6 тис.