Статья про то, как с помощью расширенных генераторов Python сделать собственную реализацию сопрограмм, переключающихся по получению событий. Простота кода получившегося модуля вас приятно удивит и прояснит новые и мало используемые возможности языка, которые можно получить, используя такие генераторы. Статья поможет разобраться и с тем, как это устроено в серьезных реализациях: asyncio, tornado, etc.
Читать полностью »
Рубрика «coroutine» - 3
Python реализация парадигмы event-driven с помощью сопрограмм
2014-11-14 в 11:23, admin, рубрики: coroutine, event loop, event-driven programming, python, tornado, yield from, Алгоритмы, параллельное программирование, паттерны проектирования, событийное программированиеСовременный торнадо, часть 2: блокирующие операции
2014-07-27 в 11:43, admin, рубрики: async, coroutine, mongodb, motor, python, tornado, Веб-разработкаУлучшаем наш распределённый хостинг картинок. В этой части мы поговорим о конфигурировании приложения и подключим защиту от csrf. Затем, на примере создания миниатюр картинок, научимся работать с блокирующими задачами, запускать корутины параллельно и обрабатывать возникающие в них исключения.Читать полностью »
Примеры использования asyncio: HTTPServer?!
2014-03-26 в 15:27, admin, рубрики: coroutine, python, Веб-разработка, ПрограммированиеНе так давно зарелизилась новая версия Python 3.4 в changelog которой вошло много «вкусностей». Одна из таких — модуль asyncio, содержащий инфраструктуру пригодную для написания асинхронных сетевых приложений. Благодаря концепции сопрограмм (coroutines), код асинхронного приложения прост для понимания и поддержки.
В статье на примере простого TCP (Echo) сервера я постараюсь показать с чем едят asyncio
, и рискну устранить «фатальный недостаток» этого модуля, а именно отсутствие реализации асинхронного HTTP сервера.
Читать полностью »
Техника написания аналога await/async из C# для C++
2013-07-05 в 13:23, admin, рубрики: boost, c++, coroutine, асинхронное программирование, параллельное программирование, Программирование, метки: boost, c++, coroutine, асинхронное программированиеОбычно в таких статьях делают заголовок вида «аналог await/async для C++», а их содержимое сводится к описанию ещё одной библиотеки, выложенной где-то в интернете. Но в данном случае нам не требуется ничего подобного и заголовок точно отражает суть статьи. Почему так смотрите ниже.Читать полностью »
Лучшее в мире PHP за 2012 и дайджест интересных материалов за последние две недели №7 (15.12.2012 — 28.12.2012)
2012-12-28 в 15:04, admin, рубрики: composer, coroutine, phalcon, php, PHP-FIG, traits, yii, Zend Framework, Блог компании Zfort Group, Веб-разработка, дайджест, Новости, подборка, ссылки, метки: composer, coroutine, phalcon, PHP, PHP-FIG, traits, yii, zend framework, Веб-разработка, дайджест, новости, подборка, ссылки
Следуя традиции, мы решили подвести итоги уходящего года и выделить самые значимые события в мире PHP, которых, к счастью, было немало. И, конечно же, подборка с ссылками на свежие материалы.
Приятного чтения!
Читать полностью »
Coroutines в PHP и работа с неблокирующими функциями
2012-12-28 в 6:01, admin, рубрики: coroutine, phpОдним из самых больших нововведений в PHP 5.5 будет поддержка генераторов и корутин (сопрограмм). Генераторы уже достаточно были освещены в документации и в нескольких других постах (например в этом или в этом). Сопрограммы же получили очень мало внимания. Это гораздо более мощный, но и более сложный для понимания и объяснения, инструмент.
В этой статье я покажу как реализовать планировщик задач с использованием корутин, чтобы вы поняли, что с ними можно делать и как их применять. Начнем с нескольких вступительных слов. Если вы считаете, что вы уже достаточно хорошо знаете как работают генераторы и корутины, тогда можете сразу перейти к разделу «Совместная многозадачность».
Генераторы
Суть генератора в том, что это функция, которая возвращает не просто одно значение, а последовательность значений, где каждое значение выброшено одно за другим. Или, другими словами, генераторы позволяют вам реализовать итератор, без лишнего кода.
Читать полностью »