zhub.link is one of the many independent Mastodon servers you can use to participate in the fediverse.

Administered by:

Server stats:

28
active users

#asyncio

0 posts0 participants0 posts today

Под чешуёй асинхронности: from yield to await

В данной статье мы рассмотрим основы асинхронного программирования в python, фокусируясь на ключевых концепциях и их практическом применении. Мы начнем с изучения генераторов и итераторов — фундаментальных механизмов, лежащих в основе асинхронности python. Затем поговорим о потоках и процессах, чтобы понять, как они соотносятся с асинхронным подходом. Основная цель статьи — создание собственной упрощенной реализации asyncio, включая цикл событий, задачи и примитивы синхронизации. Это позволит глубже понять внутреннее устройство асинхронной разработки в python.

habr.com/ru/articles/889490/

ХабрПод чешуёй асинхронности: from yield to awaitВ данной статье мы рассмотрим основы асинхронного программирования в python, фокусируясь на ключевых концепциях и их практическом применении. Мы начнем с изучения генераторов и итераторов —...

Concurrency testing — отлавливаем состояния гонки

В статье разберём некоторые техники обнаружения плавающих багов, вызванных конкурентностью. Сделаем подход к автоматическому тестированию устойчивости веб-сервисов к различным race condition. Примеры будут на python + asyncio + sqlalchemy, но эти подходы применимы к любым моделям конкурентности, которые подвержены состояниям гонки.

habr.com/ru/companies/tochka/a

ХабрConcurrency testing — отлавливаем состояния гонкиВ статье разберём некоторые техники обнаружения плавающих багов, вызванных конкурентностью. Сделаем подход к автоматическому тестированию устойчивости веб-сервисов к различным race condition. Примеры...

Массовая асинхронная обработка запросов с последующей синхронной CPU-bound логикой

Столкнулись с обработкой огромного числа запросов и сложной логикой? В новой статье показано, как эффективно обрабатывать до 1 000 000 запросов к API, использовать асинхронный подход для быстрого получения данных и параллельно выполнять тяжелые вычисления в отдельных процессах благодаря ProcessPoolExecutor. Узнайте, как совмещать массовый асинхронный ввод-вывод с CPU-bound обработкой, эффективно масштабировать решения и оптимизировать производительность!

habr.com/ru/articles/869142/

ХабрМассовая асинхронная обработка запросов с последующей синхронной CPU-bound логикойВ данной статье мы рассмотрим задачу массовой асинхронной обработки запросов с последующей синхронной и ресурсоёмкой (CPU-bound) логикой. Главная сложность в том, что асинхронный код отлично...

1001-ый способ миграции на асинхронный Python

Если вы пишите на Python, то наверняка давно хотите все свои сервисы переписать на asyncio. Вот и я хотел, но не из-за того, что стильно-модно-молодёжно, а потому что уже болело. Об одном таком кейсе я и расскажу, а заодно поделюсь интересным подходом и готовой реализацией. Читать ещё одну статью про GIL и asyncio

habr.com/ru/articles/837936/

Хабр1001-ый способ миграции на асинхронный PythonЧитатель увидел статью про GIL и asyncio Не прошло и полутора лет, как у меня всё-таки дошли руки написать эту статью. Сегодня я расскажу очередную историю о том, как приходилось дружить синхронный и...

Практические примеры работы с БД на Python

Базы данных являются важной составляющей любого современного приложения. БД хранят и обрабатывают огромное количество данных. При этом с приложением может работать одновременно большое количество пользователей и важно обеспечить надежное и производительное взаимодействие между базой данных и кодом приложения. Для того, чтобы обеспечить такое взаимодействие с БД нам необходима собственно библиотека для работы с базами, а также библиотека для асинхронной работы на Python. В Python есть несколько библиотек для работы с СУБД. В этой статье мы рассмотрим работу с SQLAlchemy, которая является одной из самых популярных и широко используемых библиотек для работы с базами данных. А для обеспечения асинхронной работы мы воспользуемся Asyncio. Это популярная библиотека для написания асинхронного кода на Python, которая предоставляет эффективный способ работы с базами данных.

habr.com/ru/companies/otus/art

ХабрПрактические примеры работы с БД на PythonБазы данных являются важной составляющей любого современного приложения. БД хранят и обрабатывают огромное количество данных. При этом с приложением может работать одновременно большое количество...

Оптимизация в Python. Эффективное использование модуля threading и asyncio

▍ Введение При создании нового приложения с нуля, где основным ограничивающим фактором является производительность ввода-вывода, использование asyncio может быть вполне оправданным выбором. С самого начала можно интегрировать неблокирующие библиотеки, совместимые с asyncio, такие как asyncpg и aiohttp. Однако большая часть работы может быть связана с поддержкой уже существующего кода, который использует блокирующие библиотеки ввода-вывода, например, requests для HTTP-запросов или psycopg для взаимодействия с базами данных Postgres. Кроме того, возможно, что подходящих библиотек, совместимых с asyncio, просто не существует. В таком случае, как можно извлечь выгоду из конкурентных преимуществ, которые предлагает asyncio? Многопоточность предоставляет решение для данной задачи. Поскольку блокирующие операции ввода-вывода освобождают глобальную блокировку интерпретатора, мы можем выполнять ввод-вывод параллельно в различных потоках. Аналогично библиотеке multiprocessing, asyncio позволяет использовать пулы потоков, что даёт нам все преимущества многопоточности, не отказываясь от таких API, как gather и wait.

habr.com/ru/companies/ruvds/ar

ХабрОптимизация в Python. Эффективное использование модуля threading и asyncio▍ Введение При создании нового приложения с нуля, где основным ограничивающим фактором является производительность ввода-вывода, использование asyncio может быть вполне оправданным выбором. С самого...

[Перевод] Как работает Python Asyncio: воссоздаем с нуля

Автор оригинала: Jacob Padilla Сейчас asyncio — одна из самых модных тем в Python, и это справедливо — это отличный способ обработки программ, связанных с вводом-выводом! Когда я изучал asyncio, мне потребовалось некоторое время, чтобы понять, как это на самом деле работает. Но позже я узнал, что это по сути просто очень хороший слой поверх генераторов Python. В этой статье я собираюсь создать упрощенную версию asyncio, используя только генераторы Python. Затем я собираюсь реорганизовать пример, чтобы использовать ключевые слова async и await с помощью dunder-метода __await__ , прежде чем замкнуть круг и заменить свою версию на настоящий asyncio. Надеюсь, создав простую версию asyncio в конце этой статьи, вы сможете лучше понять, как он творит свою магию!

habr.com/ru/articles/830720/

ХабрКак работает Python Asyncio: воссоздаем с нуляАвтор оригинала: Jacob Padilla Сейчас asyncio — одна из самых модных тем в Python, и это справедливо — это отличный способ обработки программ, связанных с вводом-выводом! Когда я изучал asyncio, мне...

Ускорение Python в 2 раза с помощью multiprocessing, async и MapReduce

Python действительно может считаться относительно медленным языком программирования по сравнению с некоторыми другими языками, такими как C++ или Java. Однако, существуют различные библиотеки и инструменты, которые позволяют ускорить выполнение счетных задач в Python. Рассмотрим как можно ускорить анализ данных в 2 раза!

habr.com/ru/articles/825206/

/await

ХабрУскорение Python в 2 раза с помощью multiprocessing, async и MapReduceНедостатки Python: Медленная работа и проблема с GIL Python - один из самых популярных языков программирования в мире благодаря своей простоте и удобству в использовании. Но как и в любом языке у...

Использование face_recognition и OpenCV для автоматического распознавания лиц и отправки уведомлений в Telegram

Всем добра. В наше время технологии распознавания лиц становятся все более популярными и востребованными в различных областях, начиная от безопасности и заканчивая маркетингом. В этой статье мы рассмотрим, как с помощью Python и библиотек face_recognition и OpenCV создать систему, которая будет распознавать лица, делать скриншоты при обнаружении лица в кадре и отправлять эти скриншоты в Telegram. Проект «Кто приходил» Проект «Кто приходил» представляет собой систему, которая использует технологии распознавания лиц для автоматического определения лиц в кадре, их идентификации и отправки уведомлений с изображениями в Telegram. Это может быть полезно для обеспечения безопасности, мониторинга доступа в определенные зоны или просто для наблюдения.

habr.com/ru/articles/822637/

ХабрИспользование face_recognition и OpenCV для автоматического распознавания лиц и отправки уведомлений в TelegramВсем добра. Введение В наше время технологии распознавания лиц становятся все более популярными и востребованными в различных областях, начиная от безопасности и заканчивая маркетингом. В этой статье...

aiogram bot для вуза и куча всего остального

Краткий обзор изнутри нашего технологичного помощника в студенческих тяжбах.Проект для студентов, в котором мы помогаем им получать расписание ,отправлять жалобы и еще много всего.А также показано как это все реализовано с любимой асинхронностью, а точнее aiogram, aiohttp, asyncpg .

habr.com/ru/articles/820221/

Хабрaiogram bot для вуза и куча всего остальногоВ данной,как и в любой другой, публикации я рассмотрю разработку телеграмм ботов на новой версии aiogram 3.x .А точнее разработку бота,асинхронные запросы к postgresql,асинхронные запросы по http, да...

Async iterator timeout в Python

Представим следующую задачу: у нас есть микросервисная архитектура, в которой сервисы взаимодействуют через брокер сообщений, или через gRPC. Так или иначе, оба варианта предоставляют полнодуплексный канал связи, через который один сервис может отправлять множество сообщений другому сервису, так и в обратную сторону - сервис, исполняющий запрос, может отправлять несколько ответов (например в случае потоковой обработки данных). Такой вариант реализации ответа можно в некотором смысле называть стримингом. В числе прочих задач, решаемых при реализации возможности стриминга, существует задача определения ситуации, в которой сервис, исполняющий запрос, упал с ошибкой, и больше не может продолжать стриминг ответов. В таком случае мы даже не можем понять что именно произошло - обработка и отдача очередной порции ответа будет, но задерживается, либо же передача прервалась, и нужно сообщить об ошибке “наверх”. В протоколе HTTP, например, для детерминирования корректной вычитки ответа может быть использован заголовок Content-Length . Достаточно посчитать количество вычитанных из сокета байт тела запроса\ответа, и сравнить со значением заголовка. Сходится - мы все получили, не сошлось и сокет закрыт - ошибка. Однако вариант решения с заранее заданным количеством данных в первой порции ответов не является универсальным, поскольку не во всех случаях можно точно понимать, сколько именно данных будет передано. Да и архитектура с использованием брокеров сообщений предполагает постоянное поддержание соединения, поэтому мы можем только знать, что из такой-то очереди поступают ответы на ранее сделанный запрос, и в каком-то из ответов будет метка окончания, как маркер того, что запрос обработан и ответ выслан и получен полностью, а если такого маркера еще не получено - остается продолжать ждать. Но ждать можно бесконечно.

habr.com/ru/companies/otus/art

ХабрAsync iterator timeout в PythonВведение Представим следующую задачу: у нас есть микросервисная архитектура, в которой сервисы взаимодействуют через брокер сообщений, или через gRPC. Так или иначе, оба варианта предоставляют...

Пишем асинхронный парсер и скрапер картинок на Python с графическим интерфейсом

В этой статье мы создадим desktop-приложение, которое по нашему запросу будет сохранять на нашем диске заданное количество картинок. Так как картинок будет много, мы воспользуемся асинхронностью Python для конкурентной реализации операций ввода-вывода. Посмотрим, чем отличаются библиотеки requests и aiohttp. Также создадим два дополнительных потока приложения, чтобы обойти глобальную блокировку интерпретатора Python.

habr.com/ru/articles/801981/

ХабрПишем асинхронный парсер и скрапер картинок на Python с графическим интерфейсомКартинка для статьи создана Microsoft Designer В этой статье мы создадим desktop-приложение, которое по нашему запросу будет сохранять на нашем диске заданное количество картинок. Так как картинок...

Тестируем многоядерный процессор методом Кнута и Python’а

В 1978 году вышел третий том монографии Дональда Кнута «Искусство программирования», где автор рассматривает алгоритмы сортировки и поиска. Помимо самих алгоритмов описаны аппаратные характеристики компьютера и их влияние на производительность при работе с алгоритмами. В 2024 году мы с вами возьмём классические алгоритмы сортировки и посмотрим, как работает современный многоядерный процессор при сортировке нескольких массивов на одном и нескольких логических ядрах. Мы напишем приложение с графическим интерфейсом (GUI) на фреймворке Qt, обойдем глобальную блокировку интерпретатора (GIL), воспользуемся несколькими потоками, на один из которых переложим выполнение асинхронного цикла событий, и распараллелим этот поток для реализации параллельных вычислений.

habr.com/ru/articles/792832/

ХабрТестируем многоядерный процессор методом Кнута и Python’аВ 1978 году вышел третий том монографии Дональда Кнута «Искусство программирования», где автор рассматривает алгоритмы сортировки и поиска. Помимо самих алгоритмов описаны аппаратные характеристики...

Асинхронный python без головной боли (часть 3)
Ну вот и пришла пора погрузиться в недра asyncio и подробнее познакомиться с циклом событий. С его помощью мы научимся писать собственные асинхронные веб-серверы, создавать асинхронные драйверы внешних устройств и справляться с вычислительно-затратными задачами в асинхронных приложениях. И снова здравствуйте

habr.com/ru/articles/774582/

ХабрАсинхронный python без головной боли (часть 3)Это продолжение цикла статей про asyncio. Предыдущая статья здесь . Дорогие читатели! К сожалению, выход третьей статьи цикла про asyncio прямо-таки неприлично затянулся. Поверьте, на то были...