Тёмный

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

Диджитализируй!
Подписаться 163 тыс.
Просмотров 145 тыс.
50% 1

Мой курс «Хардкорная веб-разработка» - 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...

Опубликовано:

 

16 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 735   
@t0digital
@t0digital 5 месяцев назад
Мой курс «Хардкорная веб-разработка» - course.to.digital Вжух!
@MrVindor
@MrVindor 3 года назад
Спасибо за видео! Важная тема, давно жду ее)
@79fz270704
@79fz270704 3 года назад
Тема интересная, ждем продолжения.
@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 11 месяцев назад
Братан ты бы вышел на улицу воздухом подышал, пивка попил
@mrMarseleene
@mrMarseleene 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 в спектруме, прерывание задаётся в каком-то регистре и вроде указывается адрес перехода. Уже не помню
@user-ik1in6zt4y
@user-ik1in6zt4y 3 года назад
Благодарю за ваш труд!
@myroslavzadoian4549
@myroslavzadoian4549 3 года назад
Ждём следующее видео! Тема очень интересная, интересно услышать твои мысли!
@t0digital
@t0digital 3 года назад
Спасибо!
@toomanof
@toomanof 3 года назад
Продолжай в тоже духе! Хороших лекторов не так уж много!
@t0digital
@t0digital 3 года назад
Спасибо!
@zavserj
@zavserj Год назад
ru-vid.comHpwZpcfOxto?feature=share
@SueBeatMaker
@SueBeatMaker 10 месяцев назад
@@t0digital Поддерживаю
@MS-fu3zf
@MS-fu3zf 3 года назад
Здорово. Отличный ввод в многопоточность и асинхронность. Спасибо.
@t0digital
@t0digital 3 года назад
Рад, что полезно!
@user-ek3gb9sf6y
@user-ek3gb9sf6y 10 месяцев назад
Спасибо за подробное и понятное описание!
@FILA2209
@FILA2209 3 года назад
Круто! Все очень доступно и понятно изложено! Спасибо!
@user-js8ig2en8e
@user-js8ig2en8e 3 года назад
Алексей! Спасибо за ваши видео! Почаще бы.
@user-sp2uu8xy8z
@user-sp2uu8xy8z 2 года назад
Отличное видео. Спасибо!
@Konushbai
@Konushbai 2 месяца назад
Спасибо! Ждем больше примеров на практике
@HeyArtem
@HeyArtem Год назад
Спасибо за информацию. Легко и интересно слушать. То что искал!
@vladimirkirdan
@vladimirkirdan Год назад
Ты очень круто всё объясняешь! Очень нравится структура твоих видео! Нет никакой воды из разряда «что бы установить пакет, используйте пип инсталл…» но в тоже время нет «эээ ну тут просто переписываете ядро». Всё очень понятно, доступная информация
@mgm_smile
@mgm_smile 3 года назад
Отличное видео! Жду продолжения =)
@t0digital
@t0digital 3 года назад
Скоро будет:)
@webxcryptoit7308
@webxcryptoit7308 Год назад
Все очень круто, отличный формат и подача! Спасибо, большое!
@t0digital
@t0digital Год назад
Спасибооо!
@ITPROSTA
@ITPROSTA 9 месяцев назад
Наверное самое лучшее видео по этой теме на ютубе! Все четко и понятно!
@t0digital
@t0digital 9 месяцев назад
Спасибооо!
@jorupbek
@jorupbek 3 года назад
Спасибо огромное за Ваши труды. Очень интересно и понятно)
@t0digital
@t0digital 3 года назад
Спасибооо!
@tonyp4826
@tonyp4826 Год назад
Супер! Как раз по чуть чуть нахватал и так удачно залетел на это видео! Спокойно четко понятно. Спасибо.
@DP_AS
@DP_AS Месяц назад
Спасибо! Вы отлично объясняете! Ценный материал!
@psychicks3463
@psychicks3463 Год назад
Очень интересно рассказываете)
@777777Philipp
@777777Philipp 2 года назад
Супер! Очень интересно и доходчиво
@Python2061
@Python2061 3 года назад
Без лишней воды. Спасибо огромное за такие ценные рассуждения.
@sergekozlov9876
@sergekozlov9876 3 года назад
Спасибо большое, ждём продолжения
@t0digital
@t0digital 3 года назад
спасибо, скоро продолжение, на бусти уже кое-что есть:)
@frx1692
@frx1692 2 года назад
Спасибо большое за ваши поучительные материалы
@FillerWorld
@FillerWorld 3 года назад
Всё предельно ясно и по полочкам, спасибо большое!
@t0digital
@t0digital 3 года назад
Рад, что полезно! Спасибо!
@dmytroznak8843
@dmytroznak8843 3 года назад
Каждый раз слушаю с большим интересом) спасибо)
@t0digital
@t0digital 3 года назад
Спасибооо!
@Deiffify
@Deiffify Год назад
Отличное видео! Очень понятно и четко! Благодарю
@egoruzh
@egoruzh 3 года назад
Интересные все видео. Спасибо. Много полезного, без понтов, доступно и профессионально.
@t0digital
@t0digital 3 года назад
Спасибо! Рад, что полезно
@user-vo6tn6vu1h
@user-vo6tn6vu1h Год назад
Без лишней воды. Спасибо огромное за инфо.
@user-it3lh7zg4n
@user-it3lh7zg4n 3 года назад
спасибо большое за простое но в то же время содержательное видео!
@user-yr7qn1dt5t
@user-yr7qn1dt5t 3 года назад
Спасибо за ваш контент!
@SemyonKalyakulin
@SemyonKalyakulin 2 года назад
Спасибо! Очень доходчивое объяснение)
@mvxmvl
@mvxmvl 3 года назад
На одном дыхании посмотрел) Очень классно, продолжай)
@t0digital
@t0digital 3 года назад
Спасибо! На бусти уже есть продолжение, скоро появится и на канале
@alexanderthegreat489
@alexanderthegreat489 3 года назад
Спасибо за видео! Очень интересно и хочется побольше примеров и практики))
@t0digital
@t0digital 3 года назад
Да, в следующих видео будут примеры и практика
@kostya8877
@kostya8877 3 года назад
Просто лучшее объяснение из всех, что я смотрел, все четко и структурированно. Спасибо огромное!
@vasiliydrogovozov4285
@vasiliydrogovozov4285 Год назад
Круто, спасибо большое!)))
@Dastan1910
@Dastan1910 2 года назад
Спасибо большое, теперь наконец-то стало понятно! )
@user-bi9sd6ly8h
@user-bi9sd6ly8h Год назад
Спасибо за классное изложение материала!
@RaZeR22L
@RaZeR22L 3 года назад
Спасибо за видео!
@TheRussificator
@TheRussificator 3 года назад
Алексей, всегда приятно тебя слушать.
@t0digital
@t0digital 3 года назад
Спасибо!
@ZHeKKa
@ZHeKKa 3 года назад
Спасибо за разъяснение такой интересной, непростой, но важной темы.
@user-uk4zv3hb2u
@user-uk4zv3hb2u 3 года назад
Спасибо за понятное изложение темы
@constkk3153
@constkk3153 Год назад
Спасибо за интересное видео!
@mikhailpetrov1948
@mikhailpetrov1948 3 года назад
Большое спасибо за доступное объяснение таких важных вещей!
@t0digital
@t0digital 3 года назад
Спасибо, рад, что понравилось!
@zeman8748
@zeman8748 3 года назад
Спасибо, реально помог разобраться)
@Zhekazhe1
@Zhekazhe1 3 года назад
Понятно и познавательно. Спасибо за полезную информацию!
@t0digital
@t0digital 3 года назад
Рад, что полезно!
@alexandershurakoff9506
@alexandershurakoff9506 2 года назад
Клевое видео для погружения в тему!
@radiksaiakhfarov4794
@radiksaiakhfarov4794 3 года назад
Ждём продолжения!)
@t0digital
@t0digital 3 года назад
Спасибо! Скоро будет продолжение
@Pumba053
@Pumba053 3 года назад
Спасибо за хороший материал, очень доступно для начинающих!
@yaroslavnovichkov6736
@yaroslavnovichkov6736 2 года назад
Большое спасибо за ролик!
@dmplet
@dmplet 2 года назад
Большое спасибо за твою работу! Очень полезная информация.
@t0digital
@t0digital 2 года назад
Спасибо! Рад, что полезно!
@tanks-blitz-shorts
@tanks-blitz-shorts 3 года назад
Спасибо огромное за это видео, все четко объяснил ))
@user-dc9jh3hq9d
@user-dc9jh3hq9d 3 года назад
Отлично! Благодарю!
@vladyslavstetsenko2655
@vladyslavstetsenko2655 3 года назад
Ждём продолжения!
@t0digital
@t0digital 3 года назад
Скоро будет:)
@dimilian4719
@dimilian4719 3 года назад
Спасибо за каждое видео, очень приятно слушать и смотреть! И темы всегда прям то, что надо!
@zavserj
@zavserj Год назад
ru-vid.comHpwZpcfOxto?feature=share
@zavserj
@zavserj Год назад
ru-vid.comHpwZpcfOxto?feature=share
@londonrokosovskiy3149
@londonrokosovskiy3149 6 месяцев назад
Четкое видео, очень доступно объяснил, лайк и подписка
@user-rc4kq3eb7r
@user-rc4kq3eb7r 3 года назад
Спасибо. Круто объясняешь!
@volfsonic
@volfsonic 2 года назад
Благодаря таким авторам, хочется изучать тему. Спасибо! Смотрим дальше
@daniilpopkov4176
@daniilpopkov4176 3 года назад
Благодарю, Вас, за труд!
@vintets
@vintets 3 года назад
Классное видео. Ждём практики.
@t0digital
@t0digital 3 года назад
Немного практики есть в следующем видео на канале, оно уже есть. А разбираться будем в следующих :)
@andreybelyaev5703
@andreybelyaev5703 3 года назад
Спасибо.. Внятно, понятно и без воды.. Талант педагога налицо!
@t0digital
@t0digital 3 года назад
Спасибооо!
@user-yp8mw9yv1k
@user-yp8mw9yv1k 2 года назад
Очень доходчиво!
@VictorPriyma
@VictorPriyma 3 года назад
Благодарю за то, что вы делаете!!!!
@t0digital
@t0digital 3 года назад
Спасибо! Будем продолжать
@jamalzeynalov2196
@jamalzeynalov2196 3 года назад
Очень полезное видео. Лайк
@s1mplo755
@s1mplo755 11 месяцев назад
Классно рассказываешь, приятная атмосфера
@t0digital
@t0digital 11 месяцев назад
Спасибо!
@andyanderson222
@andyanderson222 2 года назад
Спасибо! Очень чёткое объяснение.
@user-lz3ez3nn4j
@user-lz3ez3nn4j 3 года назад
Отличный канал, благодарю
@evrmk
@evrmk 3 года назад
Лучший! Бооольше годного контента по Python 😱🤓
@MrAlexMonk
@MrAlexMonk 3 года назад
спасибо за труд! все понятно и доступно
@t0digital
@t0digital 3 года назад
Рад, что полезно! Спасибо!
@envy1616
@envy1616 3 года назад
поразительно качественный контент! спасибо!
@t0digital
@t0digital 3 года назад
Спасибооо! Приятно:)
@bagasayn
@bagasayn 3 года назад
Супер, самая не скучная лекция :)
@dalerkhalilov9440
@dalerkhalilov9440 3 года назад
Спасибо! Отличную тему затронули, надеюсь будет продолжение. 🙏
@t0digital
@t0digital 3 года назад
Будет обязательно!
@makaronronron
@makaronronron 3 года назад
Очень круто! Выпускай почаще видео с ликбезом. Очень люблю за завтраком включить и послушать сжато полезную инфу.
@user-cn5pd6do9n
@user-cn5pd6do9n 3 года назад
Интересно, ждём продолжения
@t0digital
@t0digital 3 года назад
Спасибо! Продолжение будет
@fenixdev6406
@fenixdev6406 2 года назад
Очень интересно рассказываете! Просмотрел с интересом до конца. Хотелось бы практических-современных примеров!
@dmitrikamenev7677
@dmitrikamenev7677 Год назад
Огромное спасибо!!!
@user-sl9rx1wz9p
@user-sl9rx1wz9p 3 года назад
Спасибо, отличное видео, многое для себя понял)
@irinalivra6789
@irinalivra6789 3 года назад
Очень доступно ^_^ спасибо!
@t0digital
@t0digital 3 года назад
Юхууу, спасибо! 🙏
@nemirovandrei
@nemirovandrei 3 года назад
Хорошо рассказал, спасибо!
@t0digital
@t0digital 3 года назад
Спасибо, рад, что понравилось!
@user-cl2cj6jl9u
@user-cl2cj6jl9u 11 месяцев назад
Доходчивое объяснение. Интересно слушать. Благодарю 🌈
@abduaziz.ilhomov
@abduaziz.ilhomov 2 года назад
очен важная тема, спасибо за видос
@user-zn8fe6pj6g
@user-zn8fe6pj6g 3 года назад
Уважение за видео, было интересно))
@t0digital
@t0digital 3 года назад
Спасибо!
@user-td1ql3rq3d
@user-td1ql3rq3d 3 года назад
Классная подача материала!
@t0digital
@t0digital 3 года назад
Спасибооо💪
@user-so1rr2is7b
@user-so1rr2is7b 3 года назад
Классно интересно оч жду следующего видео
@jagudinfelix4470
@jagudinfelix4470 3 года назад
Добрый день, видео интересное и познавательное и вызывает ещё больше вопросов😁. Буду ждать следуещее видео)
@t0digital
@t0digital 3 года назад
Спасибо!
@user-fu8jr9if5f
@user-fu8jr9if5f 2 года назад
Ждем продолжение
@Deiffify
@Deiffify Год назад
Супер разложил! На пальцах) благодарю за труды😊
@devopsflow707
@devopsflow707 2 года назад
четенько, спасибо!
@genych93
@genych93 2 года назад
Объяснил сложные вещи доступным языком! Спасибо!
@t0digital
@t0digital 2 года назад
Спасибо!
@avorion-ru
@avorion-ru 2 года назад
Ну наконец то нашел нормальное объяснение, спасибо Вам огромное!!
@andykruch3108
@andykruch3108 3 года назад
Спасибо! Очень доходчиво и полезно!
@t0digital
@t0digital 3 года назад
Рад, что полезно!
@understandwhat
@understandwhat Год назад
очень полезно, спасибо!
@user-mu9xm3bf6j
@user-mu9xm3bf6j Год назад
Огромное спасибо за видео, все по полочкам разложил.
@t0digital
@t0digital Год назад
Рад, что полезно!
@user-sk3rc3cz2n
@user-sk3rc3cz2n 3 года назад
Спасибо. Видео на одном дыхании посмотрел. Очень интересно. Жду продолжения. Когда будет инфа по курсам?
@t0digital
@t0digital 3 года назад
Спасибо! Инфа по курсам будет скоро:)!
@aelloro
@aelloro Год назад
Спасибище! Оч полезно!
@ansor9775
@ansor9775 3 года назад
Круто получилось - просто и понятно. Ждем подобные разборки. Спасибо )
@t0digital
@t0digital 3 года назад
Спасибо!
Далее
Rose Burrito #shorts
00:35
Просмотров 6 млн
Multiprocessing: используем все ядра
27:50
Основы многопоточности в Python
58:46
Асинхронность в python
26:23
Просмотров 2,4 тыс.