Обновить
560.43

Python *

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

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

Сколько ядер CPU можно использовать параллельно в Python?

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

При выполнении параллельной программы, активно задействующей CPU, нам часто необходимо, чтобы пул потоков или процессов имел размер, сопоставимый с количеством ядер CPU на машине. Если потоков меньше, то вы будете использовать все преимущества ядер, если меньше, то программа начнёт работать медленнее, так как несколько потоков будет конкурировать за одно ядро. Ну, или такова ситуация в теории.

Как же проверить, сколько ядер есть у компьютера? И действительно ли это хороший совет?

Оказывается, на удивление сложно определить, сколько потоков выполнять:

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

- Хуже того, из-за таких функций CPU, как параллельность на уровне команд и одновременной многопоточности (Hyper-threading в CPU Intel), количество ядер, которое можно эффективно использовать, зависит от того кода, который напишете вы!

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

Читать далее

PLC Allen Bradley подключение с помощью Python

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

Привет, уважаемый читатель!

Хочу немного поведать тебе как через Python в локальной сети можно подключиться к PLC от Allen Bradley.

В свое время перепробовал кучу разных библиотек, но в один прекрасный день нашлась та самая "pycomm3".

Читать далее

Ortools — библиотека для решения задачи VRP

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

Привет! Меня зовут Илья Набатчиков, я MLE в компании Kamaz Digital. Также я являюсь учусь в онлайн магистратуре на базе университета ИТМО @ai-talent.

Сегодня я хочу рассказать о библиотеке ortools для решения проблемы маршрутизации транспортных средств с учетом ограничений по времени и грузоподъемности (CVRPTW).

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

Читать далее

4 миллиарда операторов if

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

Просматривая недавно соцсети, я наткнулся на этот скриншот. Разумеется, его сопровождало множество злобных комментариев, критикующих попытку этого новичка в программировании решить классическую задачу computer science: операцию деления с остатком.

В современном мире, где ИИ постепенно заменяет программистов, отнимая у них работу и совершая переворот в том, как мы подходим к рассуждениям о коде, нам, возможно, следует быть более открытыми к мыслям людей, недавно пришедших в нашу отрасль? На самом деле, показанный выше код — идеальный пример компромисса между временем и задействованной памятью. Мы жертвуем временем и в то же время памятью и временем компьютера! Поистине чудесный алгоритм!

Поэтому я решил изучить эту идею проверки чётности числа при помощи одних сравнений, чтобы понять, насколько хорошо она работает в реальных ситуациях. Я сторонник высокопроизводительного кода, поэтому решил реализовать это на языке программирования C, потому что он и сегодня остаётся самым быстрым языком в мире с большим отрывом от других (благодаря гению Денниса Ричи).

Читать далее

Python без типов: таким он когда-то был

Время на прочтение5 мин
Охват и читатели10K
О типизации в Python сказано уже очень много. Если вам выпало сомнительное удовольствие поработать со мной, то вы, вероятно, в курсе, насколько скептически я отношусь к типизации в Python. Причины тому – сложность синтаксиса, mypy еле ползает, реализация языка в принципе переусложнена, а взаимодействовать с ним зачастую неудобно. Сегодня я не буду упирать на эти детали, а хочу пригласить вас в небольшое путешествие в прошлое и рассказать, каковы были мои первые впечатления от работы с Python. Почему? Потому что я думаю, что существует фундаментальный и глубокий конфликт между формообразующей философией Python и концепцией типизации. Причём, этот конфликт не нов.
Читать дальше →

Вы точно хотите быть Data Scientist-ом?

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

Прочитав замечательную статью от @dalerank, я подумал, а чем собственно мы хуже: моя любимая индустрия тоже полна мифов и разочарований, особенно учитывая недавние "прорывы в AI" и хайп вокруг больших языковых моделей по типу ChatGPT.

Создается ощущение, что теперь каждая компания считает, что у ей непременно нужно прикрутить волшебную вундер-вафлю на машинном обучении к каждому своему продукту, добавить AI в рекламную кампанию, и дела пойдут в гору. Шутка ли, этот ваш пресловутый AI теперь даже в холодильниках есть.

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

Нет, скорее всего вы не будете создавать state of the art (SOTA) системы, которые будут рисовать, искать информацию и писать код лучше, чем эти бесполезные кожаные мешки. А даже если будете - это будет только 20% вашей работы. Так ли это грустно? - я постараюсь рассказать под катом.

Читать далее

Реальный Python: грустные факты, которые вас разочаруют

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

Начинаем гуглить информацию о Python. Все статьи как под копирку: тут хорошо платят, легко учиться, гостеприимное коммьюнити, просто рай на земле. Это ловушка. Я писала на Python полтора года, так что пришло время поговорить о том, как там обстоят дела на самом деле. 

Читать далее

Flask для начинающих

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

Как начать работать с Flask

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

Вы новичок в программировании и мечтаете о создании собственных веб-приложений? Эта статья — ваш ключ к пониманию Flask, одного из самых доступных и гибких веб-фреймворков на Python. От установки и простых примеров до работы с данными и базами данных — мы покрываем все, что вам нужно для старта.

За 15-20 минут чтения вы получите не только теоретические знания, но и практические советы от опытного разработчика. Присоединяйтесь к миру веб-разработки и откройте для себя, как просто и увлекательно может быть создание ваших первых веб-приложений с Flask!

Читать далее

Размещение телеграмм бота (Aiogram3) на VPS/VDS

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

Расскажу как просто задеплоить телеграмм бота на Aiogram 3 с webhook на VPS/VDS. Посмотреть видео версию, которую я выложил, можно на YouTube

Также покажу установку двух типов сертификатов SSL: ...

C Nginx и без него ...

Читать далее

Торговый бот на Python с нуля (с использованием Binance API), часть 2

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

Продолжение первой части статьи о создании торгового бота на python с нуля с использованием Binance API!

В данной статье мы напишем полностью рабочую реальную стратегию с использованием биржевых данных. Я расскажу что такое линии Боллинджера, а также о других популярных стратегиях. Мы подробно разберем реализацию стратегии Боллинджера на python, и напишем production-ready код!

Читать далее

День в Квартале Образования. Поиски Деда Мороза продолжаются

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

В преддверии Нового года Хабраслизень занят поисками пропавшего Деда Мороза на огромной Фабрике подарков. Не без помощи хабраюзеров, конечно, которые следят за ходом поисков в хабе «Адвент 24». Они уже успели обыскать Книжный квартал, но следов Деда Мороза не нашли. Теперь внимание Хабраслизня привлёк большой Квартал Образования. 

Он собирается осмотреть местные цеха и поискать Деда Мороза там, но Слизень ещё не знает, что местные роботы любят подшутить и уже расставили свои ловушки. Помогите Хабраслизню разгадать загадки роботов и найти правильные ответы среди фальшивок.

Разобраться с роботами

Монтаж уличной ip-камеры и вывод изображения по RTSP (python, raspberry pi)

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

Камеры видеонаблюдения стали для многих стран обыденностью, например в Китае, они могут свисать гроздьями, через каждые 5 метров, по улице. Но в провинции России это все еще может быть в новинку. Я отношусь к видеонаблюдению по большей мере положительно. Ведь вид камеры, даже превентивно может предотваратить хулиганство (однажды я использовал муляжи камер в офисе:)), а главное это возможность контроллировать обьект наблюдения.

Этот пост про монтаж уличной камеры, на стену многоквартирного дома и программную реализацию - вывод изображения, без использования стандартной программы, оптимизацию (размещение на raspberry pi).

Читать далее

Учимся анализировать данные на примере API Codewars

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

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

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

Читать далее

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

Товары-аналоги и с чем их едят или Свежий подход к формированию групп товаров для управления ассортиментом Ozon fresh

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

Мы команда data science Ozon fresh. В этой статье мы расскажем об одной из наших задач - алгоритм, который помогает управлять нашим огромным ассортиментом.

Ozon fresh — это сервис быстрой доставки продуктов, бакалеи, бытовой техники, электроники и других товаров. В нашем ассортименте более 35 000 уникальных позиций (готовая еда, мясо, рыба, фрукты, овощи, товары для гигиены и многое другое). Специфика Ozon fresh заключается в мини-складах, где хранятся товары. Они доставляются клиентам в радиусе нескольких километров. 

Управление таким количеством позиций требует много человеческих и технологических ресурсов. У нас этим занимаются более 30 человек. Для упрощения работы мы  используем различные группировки товарных позиций. Самая популярная — иерархическая четырёхуровневая группировка (далее мы будем называть её «категорийное дерево»).

Читать далее

Введение в SQL & СУБД на примере доступа к данным через Python

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

Краткое введение в SQL (+СУБД) на примере доступа к данным через Python. Я начинающий Data Scientist и решил написать статью где будет базовое введение в sql, а также как извлекать данные через разные способы (SQLalchemy, Requests).

Читать далеее

Логи в телеграм-ботах

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

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

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

Ведь кто из нас не любит починить что-то за 5 минут, вместо того чтобы провести в поисках проблемы целый день?

Читать далее

Пишем свой GraphQL клиент на Python

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

Эта статья родилась из опыта использования GraphQL в проекте одного из крупнейших аэропортов РФ. Проект посвящен созданию системы по автоматизации обслуживания рейсов и управлению ресурсами аэропорта в реальном времени (MRMS система).

Проект реализован на базе микросервисной архитектуры, где модель данных аэропорта представлена в виде GraphQL API, а сервер, предоставляющий API, написан на java. Клиентами этого API являются не только web/mobile, но и сервисы на java, golang и python.

Статья написана как пошаговое руководство по созданию своего GraphQL клиента на python с нуля, где попутно автор демонстрирует проблемы, возникающие на этом пути. Использовать реальную GraphQL схему аэропорта не представляется возможным, поэтому для наглядности будем использовать открытую схему github GraphQL API.

Читать далее

Решетчатый и случайный поиск

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

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

Среди разнообразных подходов оптимизации, методы решетчатого (grid search) и случайного (random search) поиска выделяются своей способностью находить оптимальные решения в хардовых пространствах параметров.

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

Случайный поиск в свою очередь предлагает раскапывать пространство параметров путем случайного выбора точек. Этот метод используют когда пространство параметров слишком велико для полного перебора, или когда только некоторые параметры оказывают значительное влияние на результат.

Читать далее

Как программист статистику физической активности собирал

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

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

Читать далее

Эволюция BP-сервиса компании Магнит

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

Как на сервисе весом в 10 ТБайт ежедневно обрабатывать 1 Тбайт пользовательских данных и спать спокойно.

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

Читать далее

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