Обновить
1024K+

Python *

Высокоуровневый язык программирования

672,39
Рейтинг
Сначала показывать
Порог рейтинга
Уровень сложности

Асинхронные задачи с FastAPI и Celery

Уровень сложностиПростой
Время на прочтение10 мин
Охват и читатели47K

Если в приложении есть длительные процессы, то вместо того, чтобы блокировать основной поток, вы должны обрабатывать их в фоновом режиме.

Чтобы достичь этого, мы расскажем вам о процессе настройки Celery и Redis для обработки длительно выполняющихся процессов в приложении FastAPI. Мы также будем использовать Docker и Docker Compose, чтобы связать все воедино. Наконец, мы рассмотрим, как протестировать задачи Celery с помощью модульных (unit) и интеграционных тестов.

Читать далее

Уроки компьютерного зрения на Python + OpenCV с самых азов. Часть 9. Мой пэт-проект

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели21K

Оглавление: Уроки компьютерного зрения. Оглавление / Хабр (habr.com)

Начиная с этого урока, я буду рассказывать о компьютерном зрении на примере моего пэт-проекта. Для начала, что это будет за проект. На первом уроке я рассказал о стадиях обработки изображения в компьютерном зрении. В своем пэт-проекте я создам специальный конвейер, где эти стадии будут реализованы. Напомню кратко об этих стадиях:

Предобработка изображения.

Промежуточная фильтрация.

Выявления специальных признаков (фич).

Высокоуровневый анализ.

Разумеется, это не окончательный список стадий обработки. В будущем сюда может что-то добавиться, а так же некоторые стадии могут иметь подстадии.

Естественно, делать конвейер ради самого конвейера как-то бессмысленно. Надо, чтобы моя программа делала хоть что-то условно полезное. Сначала я хотел написать пэт-проект, который бы анализировал фотографии со спутников и БЛА и превращал их в граф (это перекликается с темой моей магистерской диссертации). Правда, это слишком уж амбициозная задумка для пэт-проекта. Надо что-то по- проще. В комментариях к одному из уроков мне посоветовали добавить в финале пару глав про выделение отдельных символов и распознавание их при помощи общедоступных нейронок. И вот я и подумал, может, начать пэт-проект именно с этой задачи? Распознавание текстов? Это гораздо проще.

Итак, для начала я создал пустой проект и добавил туда две папки: Exec и Libraries. В первой у меня будет запускаемый файл/файлы, во втором всякие библиотечные файлы. В качестве первого библиотечного файла создал Core.py:

Читать далее

Книга «Python для хакеров. Нетривиальные задачи и проекты»

Время на прочтение12 мин
Охват и читатели25K
image Привет, Хаброжители!

«Python для хакеров. Нетривиальные проекты и задачи» делает упор на реальные проекты, так что от экспериментирования с синтаксисом вы сразу перейдете к написанию полноценных программ. Развивая свои навыки разработки на Python, вы будете проводить научные опыты, изучать статистику и решать задачи, которые не давали покоя гениям на протяжении многих лет, и даже займетесь обнаружением далеких экзопланет.

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

Программы, представленные в книге, не отпугнут даже новичков. Вы будете осваивать все более сложные техники и наращивать навыки написания кода. Справившись со всеми миссиями, вы будете готовы к самостоятельному решению любых сложных реальных задач с помощью Python.
Читать дальше →

Как я написал удобную оболочку над электронным дневником

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели21K

Статья о том, как я в 15 лет облегчил работу с электронным дневником, представленным Кировской области в 2022 году.

Что получилось сделать и как это было реализовано.

Читать далее

PySpark для аналитика. Как правильно просить ресурсы и как понять, сколько нужно брать

Время на прочтение9 мин
Охват и читатели22K

Александр Ледовский, тимлид команды аналитики и DS в Авито, рассказал про опыт работы с Apache Spark и о том, как правильно задавать параметры Spark-сессии, чтобы получить ресурсы.

Читать далее

Telegram Bot — ваш новый помощник

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели21K

Всем добрый день, в сегодняшней рубрике я хочу затронуть достаточно интересную тему с точки зрения программирования, которая будет интересна даже обычным пользователям. Это – Telegram боты. Я создаю их уже около трёх лет, и сегодня я бы хотел вам рассказать, насколько это может быть полезно, а если данный материал станет вам интересным, то в будущем я мог бы углубиться в эту тему.

Начнём, пожалуй, с основ и терминологии. Telegram бот – это набор кода, который во время активации выполняет роль пользователя и его функционал зависит только от способностей и потребностей его создателя. Telegram ботом может воспользоваться каждый. Главное знать его название для поисковика.

На сегодняшний день Telegram ботов насчитывается бесчисленное количество. Создать своего не является проблемой. Разработка может быть, как через специальные сервисы, которые по заданным параметрам создадут вам необходимое технологическое решение для работы, так и с помощью самописного кода, но правда для этого вам нужно знать основы языков программирования таких как Python, Java или C++.

Хочу остановиться поподробнее на втором варианте, потому что для меня создавать своё всегда интереснее. При желании в интернете есть огромное количество материалов, которые помогут вам сделать его более работоспособным, а в этой статье я лишь покажу основы.

Итак, от долгой лирики к делу! Для того чтобы создать своего бота вам необходим аккаунт в Telegram. Далее, в поисковой строке вам нужно найти главного бота @BotFather. Это ваш личный менеджер и главный генерал ваших ботов. В его функционал входят регистрация ботов, их удаление, создание аватарки и название бота. Напишите этому боту команду /start, после этого вы активируете Бота “Отца”.

Читать далее

Асинхронность как основной подход к разработке высоконагруженных приложений

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели20K

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

Читать далее

Шпаргалка: fixture в pytest

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели62K

В данной статье представлены примеры использования фикстур (fixture) для фреймворка автоматического тестирования pytest. Фикстуры представляют собой функции, которые можно использовать для решения различных задач при проведении автоматизированного тестирования.

Читать далее

Особенности работы с русской кодировкой при загрузке файлов через aiohttp

Уровень сложностиСредний
Время на прочтение2 мин
Охват и читатели3.4K

В ходе исследования непонятного бага с битой кодировкой в именах загружаемых файлов мы столкнулись с непредвиденным поведением популярной библиотеки aiohttp. Решая эту проблему, мы получили полезный опыт, которым хочу с вами поделиться.

Читать далее

В помощь разработчикам гаджетов. «USB-Разрыватель» — что это, зачем и для чего?

Время на прочтение11 мин
Охват и читатели8.5K

Привет, Хабр! В этой статье рассказываем о созданном нами устройстве, которое помогает тестировать электронные девайсы в процессе разработки.  Речь идет об устройстве для автоматизации и имитации процесса отключения/переподключения USB-гаджетов. Подробности разработки и самого устройства – под катом.

Читать далее

Как ускорить бинарный поиск

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели12K

Приветствую, сообщество Habr.

Я хочу рассказать о том, как ускорить бинарный поиск и как с его помощью искать информацию в текстовом файле быстрее, чем в любой базе данных.

Читать далее

Проверка GIL в python

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели6.2K

Простое введение в вычисления в многопоточности и GIL в python. Было интересно сделать подобное исследование.

Читать далее

Создание DSL на Python с библиотекой textx

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели7.5K

Для описания объектов и процессов в терминах бизнес-логики, конфигурирования и определения структуры и логики в сложных системах популярным подходом является использование предметно-специфических языков (Domain Specific Language - DSL), которые реализуются либо через синтаксические особенности языка программирования (например, с использованием средств метапрограммирования, аннотаций/декораторов, переопределения операторов и создания инфиксных операторов, как например в Kotlin DSL) или с помощью применения специализированных инструментов разработки и компиляторов (например, Jetbrains MPS или парсеров общего назначения, таких как ANTLR или Bison). Но существует также подход реализации DSL, основанный на синтаксическом разборе и одновременной кодогенерации для создания исполняемого кода по описанию и в этой статье мы рассмотрим некоторые примеры использования библиотеки textx для создания DSL на Python.

Читать далее

Ближайшие события

Ускоряем Python в сто раз при помощи менее чем ста строк на Rust

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели23K

Однажды на работе у нас возникла проблема с производительностью одной из наших основных Python-библиотек.

Эта библиотека формирует фундамент нашего конвейера 3D-обработки. Это довольно большая и сложная библиотека, использующая NumPy и другие научные пакеты Python для выполнения широкого спектра математических и геометрических операций.

Кроме того, наша система должна работать на мощностях компании с ограниченными ресурсами CPU, и хотя поначалу она справлялась хорошо, с ростом количества одновременных физических пользователей у нас начали возникать проблемы, а наша система едва выдерживала нагрузку.

Мы пришли к выводу, что для работы с увеличившейся нагрузкой нужно сделать систему, по крайней мере, в пятьдесят раз быстрее, и решили, что помочь в этом нам может Rust.

Так как проблемы производительности, с которыми мы столкнулись, встречаются довольно часто, мы можем воссоздать и решить их прямо здесь, в (не такой уж короткой) статье.

Так что заварите себе чаю (или кофе) и я расскажу вам (а) о самой проблеме и (б) о нескольких итерациях оптимизаций, которые мы смогли применить для решения этой проблемы.

Если вы хотите сразу перейти к получившемуся коду, то читайте раздел «Подведение итогов».
Читать дальше →

О разнице между лямбдами и обычными функциями и о имплементации лямбд в некторых языках программирования

Уровень сложностиСредний
Время на прочтение17 мин
Охват и читатели24K

Цель настоящей статьи - изучить лямбда функции: чем они отличаются от обычных функций и изучить, как они реализованы в С++, Python 3 и Java.

На протяжении этой статьи я буду использовать godbolt.org, чтобы компилировать код и изучать машинный код или байт код. Я думаю, что при чтении статьи может быть удобнее смотреть не на приведённый машинный код в статье, а на этом сайте.

Читать далее

8 и 1/2 способов проверки атрибутов экземпляров класса в Python

Уровень сложностиСредний
Время на прочтение14 мин
Охват и читатели19K

Проверка типов и проверка значений обрабатываются в Python гибким и неявным образом. В Python начиная с Python 3 появился модуль typing, который обеспечивает поддержку подсказок типов. Но для проверки значений не существует единого способа проверки.

Один из сценариев, в котором нам нужна проверка значений — это инициализация экземпляра класса. На первом этапе мы хотим убедиться в правильности вводимых атрибутов, например, адрес электронной почты должен иметь правильный формат xxx@xx.com, возраст не должен быть отрицательным, фамилия не должна превышать 20 символов и т.д.

В этой статье я хочу продемонстрировать 7(с половиной - прим.пер.) вариантов проверки атрибутов класса с помощью встроенных модулей Python или сторонних библиотек. Интересно, какой вариант вы предпочитаете? Если вы знаете другие варианты, пишите в комментариях. Поехали.

Читать далее

Оптимизируем использование памяти в приложениях Python

Время на прочтение10 мин
Охват и читатели17K
Когда дело доходит до оптимизации производительности, чаще всего особое внимание уделяется скорости и активности использования ЦП. Гораздо реже кто-либо задумывается о потреблении памяти, конечно, пока не будут израсходованы мощности RAM. Есть много причин, по которым предпринимаются попытки лимитировать использование памяти – не только стремление избежать отказа приложения из-за ошибок, связанных с её исчерпанием.

В этой статье будет исследовано, как находить в ваших приложениях на Python такие участки, где возникает перерасход памяти, проанализировано, по каким причинам это происходит. Наконец, мы научимся снижать использование памяти и сокращать отпечаток программы в памяти, пользуясь простыми приёмами и эффективными структурами данных.
Читать дальше →

Новые горизонты в оценке рисков: как источники данных помогают создать точные модели

Время на прочтение8 мин
Охват и читатели4.7K

На связи команда по разработке риск-моделей для крупного корпоративного, а также малого и среднего бизнеса банка «Открытие» — Андрей Бояренков, Владимир Иванов и Иван Луговский. В этой статье мы расскажем про наш опыт улучшения показателей ранжирования моделей оценки вероятности дефолта заемщика/скоринговых моделей за счет использования различных источников данных и объединения их в отдельные модули.

Читать далее

PyCharm Docker Django Debug

Уровень сложностиПростой
Время на прочтение2 мин
Охват и читатели16K

Эта статья посвящена настройке IDE для возможности запуска и отладки Django сервера. Статья нацелена на людей которые столкнулись с подобной проблемой и хотелось бы поделиться опытом, так как сам прошёл эти этапы.

Читать далее

За границей Hello World: полный гайд по разработке Telegram ботов с помощью Python и Aiogram 3. Часть 1

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели362K

Нетипичный туториал по разработке Telegram-бота на Python и Aiogram 3. В отличие от большинства гайдов и туториалов про разработку ботов «для новичков», здесь будут рассмотрены все аспекты создания бота, от установки редактора кода до подключения оплаты и развёртывания на сервере. В первой части мы рассмотрим подготовку окружения, файловую структуру бота и напишем первый рабочий код бота.

Читать далее