Основы асинхронности в Python #4: Генераторы и событийный цикл Round Robin

preview_player
Показать описание
Мои курсы:
Boosty:

Patreon:

Основы асинхронности в Python для начинающих, она же "кооперативная многозадачность".
Речь в этой серии идет о коде, который асинхронно выполняется в одном потоке и в одном процессе.

В этом видео:
Подробно рассматриваем, что такое генераторы в Python и зачем они нужны. Рассматриваем паттерн событийного цикла Round Robin ("Карусель").

Ключевые моменты этого видео - способность функций-генераторов приостанавливать свое выполнение и затем его возобновлять с того места, где выполнение остановилось в прошлый раз. Ну и сам Round Robin, конечно же.

*** ИСХОДНЫЙ КОД ***
Основных проектов доступен в Patreon:
***

🔷 Для донатов. Всегда очень признателен за это:

Весь плейлист:

Основы асинхронности в Python #1: Введение

Основы асинхронности в Python #2: Асинхронность с простыми функциями. Событийный цикл.

Основы асинхронности в Python #3: Асинхронность на колбэках.

Основы асинхронности в Python #4: Генераторы и событийный цикл Round Robin

Основы асинхронности в Python #5: Асинхронность на генераторах

Основы асинхронности в Python #6: Корутины и yield from

Основы асинхронности в Python #7: Asyncio, async/await
Рекомендации по теме
Комментарии
Автор

В предыдущих сериях:

Я знаю, что вы ждете скринкаст про asyncio и async/await.
Еще разок хочу повториться, что ирония ситуации заключается в том, что эти видео и есть - про модуль asyncio и про синтаксис async/await.

Вам может показаться идиотизмом то, что я говорю о таких странных вещах, как асинхронность на колбэках или на генераторах (об этом позже) в то время, когда "все пишут" с помощью asyncio и async/await.

Человек приходит сюда послушать про асинхронность, в надежде, что уж тут-то он сразу поймет, как эти штуки работают - ведь "Python - это очень легкий язык", верно?

Он ищет волшебную красную таблеточку: "Весь Python за 7 легких уроков", а получает вот эту вот непонятную хрень.

Разочарование.

У меня для вас есть новости:
1. Легкого пути нет.
2. Волшебной и вкусной красной таблеточки, от которой вы еще и удовольстве получите - тоже нет.
3. Все очень долго, сложно, неинтересно и непонятно.

Ключевой момент здесь в том, что те, кто используют asyncio, async/await все, о чем я здесь говорю уже знают, потому что эти темы не свалились на них с неба. Эти люди развивались вместе с концепциями асинхронности. Для них это просто очередной уровень абстракции над тем, что они и так пишут/используют.

Если к скринкасту про asyncio, async/await вам не будет понятно:
- как работают событийные циклы
- как работают генераторы и корутины на их основе

то и эти темы будут, скорее всего, по-прежнему для вас закрыты.


Следующее видео будет опубликовано в субботу 15-го декабря.

zaemiel
Автор

Рад что пока всякие Хайди и Дудари занимаются популизмом и пустословием находятся люди, которые делают реальный контент для реальных задач. спасибо!

duyyotz
Автор

Семь, 20-45 минутных роликов на ютубе полезней, чем чем 1ый курс программирования в моём институте. Коротко об IT образовании в России.

ndhtvsj
Автор

наконец стало понятно что такое генератор, видела много уроков и статей, но именно этот ролик зашёл

dasha
Автор

Шикарная подача. Я привык, что по разработке адекватную информацию можно найти только на английском языке. Данный плейлист затмил подачей и уровнем изложения всех англоязычных авторов. Обязательно посмотрю обучение по async/await, когда с эти плейлистом закончу.

alexeysukhinin
Автор

Олег, Вы прекрасно объясняете. Спасибо Вам. С большим удовольствием и интересом смотрю Ваши уроки.

oizldei
Автор

Лучшее объяснение генератора, которое я когда-либо слышал)

ffsdwlh
Автор

Чрезвычайно полезные видео, отличная подача материала, всё по полочкам. Удивляет маленькое количество лайков. Огромное спасибо за работу, Олег!

xlquyjk
Автор

Одно из полезнейших видео, просмотренных мной в жизни

nonpiramid
Автор

Всё чётко и по делу. Работа генераторов стала намного понятнее!

bekaryukovmv
Автор

Спасибо за Ваш труд, очень полезные уроки.

vladimirpa
Автор

контент просто огонь, придется весь канал пересматривать

igorcherepanov
Автор

Мне особенно понравилась аналогия с воровством воды из бассейна соседа. Легко усваивается и врезается в память!

andreyzaytsev
Автор

Чувак, ты гениально просто все объясняешь!

kxoiifj
Автор

Спасибо за видео, как всегда подача 10 из 10. Очень жаль что нет больше новых видео на канале.
Мало кто может объяснять так темы, обычно натыкаешься на видео где авторы проходятся по верхам а в глубь копать не хотят.
Будто бояться, что отпугнут подписчиков/зрителей.

А на просторах русскоязычного ютуба серьёзного контента по пальцам пересчитать.


Олегу всех благ, и огромное спасибо за ваш труд.

Nfix
Автор

Спасибо за проделанную работу, автору респект

phil
Автор

Спасибо, наконец-то понял yield. Вроде простой принцип работы, но тупил на нем

acb
Автор

Очень помогаешь разобраться, спасибо тебе!

caiman
Автор

Про генератори - круто. Реально не знав.

VitalySem
Автор

Классная подача, спасибо!
Здорово, что на простых примерах показываете сам принцип. Самое сложное по данной теме - научиться "думать асинхронно". Перестроиться с синхронного проектирования на асинхронное.

Небольшое замечание: в ф-ции gen_filename для названия переменной используется имя встроенной функции (sum), что является не самой хорошей практикой. Вы, я думаю в курсе пагубности подобной практики, это скорее информация для новичков. Лучше выбирать другие названия переменных. В вашем примере это не страшно, т.к. переменная определяется только в локальной области видимости.
Ну а в целом, такие действия могут привести к подобным результатам:

>>> sum([1, 2, 3, 4])
10
>>> sum = 234 + 234
>>> sum([1, 2, 3, 4])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable

mikhailsokolenko