Обновить
641.57

Python *

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

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

Быстрее, выше, сильнее: сравнение подходов poetry, rye и uv

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров3.1K

Привет, с вами снова Егор, Tech Lead компании ИдаПроджект. Я все еще занимаюсь стратегией, процессами и командами в направлении backend-разработки :)

Когда-то давно (по меркам IT), шесть лет назад, мы сходили на конференцию и послушали про poetry, преисполнились и внедрили его у себя на проектах. Но ничто не стоит на месте: вот уже два года мир знает о uv, а недавно появился еще и rye. Поэтому я посвятил пару выходных тестированию этих инструментов, чтобы использовать на наших типичных проектах.

В статье сравним poetry, uv и rye: кто быстрее управляет зависимостями, как использовать их в Docker, и какой из них выбрать в 2025 году. Заодно пробежимся по философии инструментов и посмотрим пару новых PEP стандартов, которые могут улучшить работу с зависимостями.

Читать далее

Имитатор касаний. Ч3: Программная часть

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров2.7K

Цифры нажимались как бы сами собой, быстро следуя в чётком порядке. Это было очень круто! Кряк даже пустил слезу от умиления, а енот довольно потирал свои ловкие ручонки.) Наверняка ему не терпится сделать ещё один интересный проект.
+++
Проанализировав данные, полученные с помощью обратной разработки в части 1 и части 2, можем прикинуть алгоритм работы имитатора касаний, написать приложение и взломать пароль! Этим сегодня и займёмся.

– Кто-нибудь, разбудите программиста!
Читать дальше →

От скриптов к сервисам: 10 книг для профессиональной разработки в Data Science

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров6.7K

Привет! Меня зовут Марк Паненко, и я Chief Data Science в Ozon Банке. Сегодня я хочу поговорить про книги, которые научат писать код. В современной экосистеме Data Science недостаточно просто знать алгоритмы машинного обучения и статистические методы — необходимы прочные инженерные навыки для создания масштабируемых, поддерживаемых решений.

Это третья часть серии статей о главных книгах для data-специалистов. В первой части «От комиксов до нейросетей» я писал о литературе для джунов. Во второй — «Код устареет, принципы — останутся» — для мидлов и сеньоров.

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

Читать далее

AI агенты — клоны сотрудников (часть 3)

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров7.1K

Итак, я прошел длинный путь создания RAG с нуля, и начал делать AI агентов для нашей компании.

По технологиям испробовал:

Читать далее

История эволюции веб-сервиса: от примера из доки до космолета

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров1.3K

5k RPS, 5ms Latency и 100 экспериментов одновременно. История о том, как наша команда перестраивала веб-сервис для сплитования трафика в высокопроизводительную систему. С какими ограничениями Cpython и Gil столкнулись на пути, как обходили "узкие места" и оптимизировали сервис до микросекунд. В общем, всё о том, как мы построили "космолет" на Python и взлетели! Ну и, конечно же, ответ на вопрос: "Почему не Go? ".

Читать далее

Инструменты Python для анализа данных на примере данных стриминг-сервиса

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

В данной статье рассмотрены некоторые методы и инструменты библиотек python для анализа данных. Используем три самые популярные библиотеки: Pandas, Numpy, Seaborn

Читать далее

Как спрогнозировать вес птицы с помощью XGBoost: от предобработки данных до оптимизации модели

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров2.5K

Привет, Хабр! Вот когда каждый грамм действительно имеет значение: если вам нужно спрогнозировать вес птицы перед продажей, чтобы экономить на кормах и оптимизировать производство. Меня зовут Михаил Чирков, я data scientist в R-Style Softlab и сегодня хочу поделиться с вами кейсом прогнозирования с помощью XGBoost, этот проект мы делали в рамках внедрения BI-системы для птицефабрики. 

Читать далее

Год с Dishka: какой он — модный DI-контейнер?

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров8.7K

Привет, Хабр, меня зовут Юрий, я уже год использую хайповый IoC‑контейнер dishka в python-проекте и хочу немного поделиться опытом эксплуатации.

Мой проект — движок для городской ночной поисковой игры «Схватка» («Энкаунтер» или «Дозоры»). Проект полностью open source.

Читать далее

Датасеты меняют всё (*в мобильной платформе SimpleUI)

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

Речь пойдет о новом механизме хранения и манипулирования данными в SimpleUI, который так тесно связан с UI-механизмами платформы что по сути является частью UI/UX. Это многогранный артефакт – это и «визуальная форма данных» (списки, поля ввода, поиск) и резидентное в памяти хранение и примитивное локальное хранение. В целом можно сказать, что «вы наполняете датасет данными, а платформа делает все остальное». Причем в результате выигрыш во всем – в скорости разработки, в прозрачности решения и производительности на любых объемах данных. Кроме того, это удобная работа со ссылочными объектами, что делаем Симпл более удобным для работы с данными внешних систем, а датасеты в свою очередь становятся основным механизмом хранения данных внешних систем (даже для онлайн-решений).

Читать далее

Поиск ликвидных облигаций с использованием Python

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

На Московской бирже торгуется более 2500 облигаций, но большая часть из них неликвидна - в стакане почти нет предложений и сделок совершается крайне мало. Это затрудняет покупку и продажу таких бумаг. При этом известные мне публичные сервисы не суммируют объемы торгов за период, поэтому сложно быстро найти облигации с высокой ликвидностью.

Пять лет назад написал Node.js-скрипт, затем адаптировал его для Google Таблиц, а теперь разрабатываю Python версию. При помощи сообщества на GitHub эта Python версия идёт к созданию полноценной библиотеки с расширенными возможностями: автоматический поиск ликвидных облигаций, расчет денежных потоков, сбор новостей по эмитентам и вычисление оптимального объема покупки. Все это направлено на помощь простым инвесторам, вроде нас с вами, чтобы оперативно находить выгодные инвестиционные инструменты и принимать решения на основе актуальной информации.

Проект полностью open source.

Автоматизация работы с облигациями

Бэктестинг торговых стратегий на Python с помощью Numba. Когда перевод расчетов на GPU действительно оправдан?

Уровень сложностиСложный
Время на прочтение26 мин
Количество просмотров7.2K

Бэктестинг — ключевой процесс в алгоритмической торговле. Он позволяет проверить стратегию на исторических данных, прежде чем запускать её в реальной торговле. Однако, чем больше данных и сложнее логика стратегии, тем дольше времени занимают вычисления. Особенно если стратегия анализирует тиковые данные и требуется протестировать множество комбинаций гиперпараметров стратегии, время вычислений может расти экспоненциально.

В этой статье мы разберем, как реализовать бэктестинг на чистом Python, посмотрим сколько времени могут занимать вычисления, а также попробуем найти разные способы оптимизации.

Python, как известно — это интерпретируемый язык, что означает, что код выполняется построчно во время исполнения программы, а не компилируется в машинный код заранее, как это происходит, например, в C или C++. Это делает разработку быстрее и удобнее, так как можно сразу видеть результаты выполнения кода и легко отлаживать программы. Но этот же факт, в свою очередь, приводит к тому, что Python заметно уступает в скорости более низкоуровневым языкам. К тому же Python использует динамическую типизацию, что требует дополнительных проверок и снижает производительность и если данных очень много, это может приводить к значительным сложностям, связанным с увеличением времени вычислений.

Как же использовать ту легкость и скорость разработки Python и при этом сохранить адекватное время вычислений на больших объемах данных? В этой статье мы увидим, насколько перенос вычислений на GPU может увеличить производительность вычислений.

Читать далее

Как мы обучили модель прогноза ранней просрочки: логистическая регрессия vs градиентный бустинг

Время на прочтение9 мин
Количество просмотров2.9K

Всем привет! На связи дата-сайентисты стрима разработки моделей для корпоративного сегмента ВТБ — Андрей Бояренков, Иван Кондраков и Денис Дурасов.

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

Поэтому мы составили мэппинг возможных моделей на элементы работы Банка с клиентами малого и среднего бизнеса в части предотвращения просрочек по кредитной задолженности, а также по взысканию задолженности. Из данной схемы стало понятно, что есть необходимость разработать модели для процессов по мониторингу заёмщиков Банка — Precollection-модели.

Под катом расскажем, как мы их разрабатывали и каких результатов удалось с ними добиться.

Читать далее

Три теоремы о сортировках

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

Я знаю многих программистов и руководителей в IT компаниях, которые недолюбливают математиков и в частности считают их далёкими от жизни идиотами из-за их утверждений в духе "нельзя отсортировать последовательность быстрее, чем за nlogn" -- ведь это очевидным образом неверно, есть же сортировка подсчетом и radix sort. Нюанс в том, что описанное выше -- это распространённая некорректная трактовка одной из ключевых теорем об алгоритмах сортировок, корректное утверждение выглядит так: "не существует алгоритма, который бы гарантированно находил перестановку n элементов, приводящую к возрастающему порядку, быстрее чем за nlogn используя только операции попарного сравнения". В этом утверждении больше слов, оно более сложно в плане когнитивного восприятия, ключевой момент обозначил жирным шрифтом, чувствуете разницу?

В статье хочу рассказать об этой теореме и ещё о двух, на которые я наткнулся когда вел занятия по информатике в 9-11 классах будучи студентом старших курсов. Эти теоремы для меня были удивительным открытием, радовался вне себя когда вывел сам одну из них - её я не встречал ни в одном учебнике по информатике. В последствии все три теоремы были найдены в недрах Кнута, но чёрт побери, их поиск был сложнее, чем вывод!

Если я ещё не убедил Вас прочитать статью, то вот моя последняя попытка: в статье объясню почему пузырёк -- это бесполезная фигня, но внезапно практически также работающая сортировка вставками -- это супер важная сортировка, являющаяся частью std::sort в MSVC, GCC и Clang. Расскажу, каким интересным свойством оптимальности обладает сортировка выбором, являющаяся в теории такой же неэффективной как пузырёк.

Читать далее

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

Процедурная генерация двухмерной полигональной карты

Время на прочтение14 мин
Количество просмотров7.1K

Привет Хабр ! Это моя первая статья на тему процедурной генерации. Здесь я рассмотрю конкретную задачу по генерации, её решение и опишу ключевые использованные принципы. Пишу эту статью для того, чтобы поделиться идеями и опытом, которых мне не хватало, когда я взялся за дело две недели назад. Я не буду делать полный разбор проекта, а лишь опишу и визуализирую принцип.

Читать далее

Сделать мобильного робота автономным? Это просто

Уровень сложностиПростой
Время на прочтение30 мин
Количество просмотров5.2K

Как отправить робота на автономное патрулирование и научить его «видеть»? Разбираем реальный кейс создания роботизированной системы мониторинга на базе отечественной платформы: выбор оборудования, интеграция ИИ и примеры кода. Делимся опытом, как научить робота собирать данные, обходить препятствия и почему отказались от модной робособаки.

Читать далее

Polars для обработки JSON и Parquet

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

Привет, Хабр!

Сегодня рассмотрим тему обработки временных рядов с помощью Polars.

Начну с того, что в Pandas для агрегации временных рядов принято использовать метод resample(). Он удобен и привычен, но имеет свои ограничения по производительности и гибкости. Polars, в свою очередь, имеет метод groupby_dynamic(), который позволяет группировать данные по динамическим временным интервалам.

Читать далее

Cohere Command — революция, которую мы пропустили

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров14K

🔪 Карусель триальных токенов под ребро облачному LLM провайдеру

Облачный LLM провайдер Cohere предоставляет бесплатно 20 запросов в минуту без проверки кредитной карты. Я просто не смог отказаться от задумки сделать веселую карусель.

Читать далее

Делаем раскраску из ваших фото

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров3.4K

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

Создать раскраску

Нейросети для семантической сегментации: U-Net, LinkNet, PSPNet

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

Всем привет! Недавно я закончил один из этапов собственного проекта, в котором я провел сравнительный анализ 3 одних из самых известных нейросетей для семантической сегментации: U-Net, LinkNet, PSPNet. Теперь я хочу поделиться со всеми, чтобы в случае, если кто-то захочет сделать что-то подобное или ему просто понадобится, то он не искал весь интернет, как я, а легко и просто все нашел. В конце главы каждый нейросети я оставил ссылки на оригинальные статьи для желающих самостоятельно все изучить (на английском). Ссылка на мой GitHub с полноценной версией всех нейросетей и main файла в конце статьи.

Я расскажу кратко о подготовке входных данных перед тем, как подавать их в нейросеть, объясню самые важные детали каждой модели по отдельности, а также покажу результаты сравнения. Использовал я библиотеку Tensorflow, а обучение проводил в среде Google Colab.

Читать далее

Руководство по слабым ссылкам в Python с применением модуля weakref

Время на прочтение7 мин
Количество просмотров4.1K
Вполне вероятно, что вы никогда не сталкивались с модулем weakref языка Python и, возможно, даже не слышали о нём. Притом, что ваш код может быть написан и почти без применения слабых ссылок, этот модуль фундаментально важен для внутреннего устройства многих библиотек, фреймворков и самого языка Python. Так что в этой статье мы исследуем, что он собой представляет, чем может быть полезен, и каким образом этот модуль вам было бы удобно встраивать в ваш собственный код.

Основы


Чтобы понять модуль weakref и слабые ссылки, давайте сначала немного подробнее выясним, как в Python происходит сборка мусора.

В качестве механизма, регулирующего сборку мусора, Python использует подсчёт ссылок. Проще говоря, Python ведёт счёт ссылок для каждого создаваемого нами объекта, и счёт ссылок увеличивается на единицу всякий раз, когда на объект ставится очередная ссылка в коде. Когда ссылка с объекта снимается (например, переменная устанавливается в None). Если в какой-то момент количество ссылок падает до нуля, это означает, что вся память, выделенная под объект, у него изымается, и в таком случае объект попадает под сборку мусора.
Читать дальше →

Вклад авторов