Обновить
844.48

Python *

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

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

Модель эффективности медиа рекламы для интернет-магазинов

Время на прочтение7 мин
Охват и читатели4.2K
Мы в агентстве People & Screens много лет работаем с онлайн-бизнесами в качестве рекламного партнера. Когда у нас появилась идея оценить вклад медийной рекламы в продажи интернет-магазинов, она казалась нереализуемой и даже безумной. Как только мы поняли, что все элементы мозаики можно найти и сложить вместе, то решили попробовать. Первые гипотезы начали подтверждаться, вместе с компанией Data Insight мы углубились в эту историю и за несколько месяцев кропотливой работы создали такое исследование, которое, по сути, является прикладным рабочим инструментом – модель оценки эффективности рекламы в 12 товарных категориях e-commerce. В этой статье мы расскажем о результатах и используемых методах анализа.

image
Читать дальше →

Атрибуты и протокол дескриптора в Python

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

Рассмотрим такой код:


class Foo:
    def __init__(self):
        self.bar = 'hello!'

foo = Foo()
print(foo.bar)

Сегодня мы разберём ответ на вопрос: «Что именно происходит, когда мы пишем foo.bar




Вы, возможно, уже знаете, что у большинства объектов есть внутренний словарь __dict__, содержащий все их аттрибуты. И что особенно радует, как легко можно изучать такие низкоуровневые детали в Питоне:


>>> foo = Foo()
>>> foo.__dict__
{'bar': 'hello!'}

Давайте начнём с попытки сформулировать такую (неполную) гипотезу:


foo.bar эквивалентно foo.__dict__['bar'] .


Пока звучит похоже на правду:


>>> foo = Foo()
>>> foo.__dict__['bar']
'hello!'

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

Клиентоориентированный Data Lake в игровой компании

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

Источник

Привет, Хабр! Меня зовут Максим Пчелин, и я руковожу разработкой BI-DWH в MyGames (игровое подразделение Mail.ru Group). В этой статье по мотивам нашего с Диной Сафиной выступления на HighLoad++ Moscow 2019 я расскажу о том, как и зачем мы строили клиентоориентированное DataLake-хранилище.

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

Комбинаторика в Python

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

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

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

Python Memory Management: немного о фрагментации памяти

Время на прочтение5 мин
Охват и читатели11K
Некоторые мысли по этой статье.

На днях заинтересовался тем, как работает Python Memory Management в CPython для Python3 для 64-разрядной Ubuntu.

Немного теории


В системной библиотеке glibc есть аллокатор malloc. У каждого процесса есть область памяти, называемая кучей. Выделяя память динамически вызовом функции malloc, мы получаем чанк из кучи этого процесса. Если размер запрашиваемой памяти небольшой (не более 128KB), то память может браться из списков свободных чанок. Если это невозможно, то память выделится системным вызовом mmap (sbrk, brk). Системный вызов mmap отображает виртуальную память на физическую. Память отображается страницами по 4KB. Большие чанки (более 128KB) всегда выделяются через системный вызов mmap. При освобождении памяти, если свободный небольшой чанк граничит с областью незамапленой памяти, то часть памяти может вернуться операцинной системе. Большие же чанки сразу возвращаются операционной системе.
Читать дальше →

Как Youtube и Instagram: интернационализация и локализация приложения на Python

Время на прочтение9 мин
Охват и читатели11K
Язык Python лежит в основе всемирно известных приложений, таких как Youtube, Instagram и Pinterest. Для продвижения на мировом рынке приложению необходима локализация, то есть адаптация к особенностям той или иной страны, и интернационализация – перевод контента. В статье мы поделимся опытом, как ускорить автоматизацию перевода и решить некоторые типичные проблемы в этой области.

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

Elixir как цель развития для python async

Время на прочтение17 мин
Охват и читатели12K
В книге «Python. К вершинам мастерства» Лучано Рамальо описывает одну историю. В 2000 году Лучано проходил курсы, и однажды в аудиторию заглянул Гвидо ван Россум. Раз подвернулся такой случай, все стали задавать ему вопросы. На вопрос о том, какие функции Python заимствовал из других языков, Гвидо ответил: «Все, что есть хорошего в Python, украдено из других языков».

Это действительно так. Python давно живет в контексте других языков программирования и впитывает концепции из окружения: asyncio позаимствован, благодаря Lisp появились лямбда-выражения, а Tornado скопировали с libevent. Но если у кого и стоит заимствовать идеи, так это у Erlang. Он создан 30 лет назад, и все концепции в Python, которые сейчас реализуются или только намечаются, в Erlang давно работают: многоядерность, сообщения как основа коммуникации, вызовы методов и интроспекция внутри живой системы на продакшн. Эти идеи в том или в ином виде находят своё проявление в системах вроде Seastar.io.


Если не брать во внимание Data Science, в котором Python сейчас вне конкуренции, то все остальное уже реализовано в Erlang: работа с сетью, обработка HTTP и веб-сокетов, работа с базами данных. Поэтому Python-разработчикам важно понимать, куда будет двигаться язык: по дороге, которую уже прошли 30 лет назад.

Чтобы разобраться в истории развития других языков и понять, куда двигается прогресс, мы пригласили на Moscow Python Conf++ Максима Лапшина (erlyvideo) — автора проекта Erlyvideo.ru.

Под катом текстовая версия этого доклада, а именно: в каком направлении вынуждена развиваться система, которая продолжает мигрировать от простого линейного кода к libevent и дальше, что общего и в чем отличия между Elixir и Python. Отдельное внимание уделим тому, как на разных языках программирования и платформах управлять сокетами, потоками исполнения и данными.

Django vue generator

Время на прочтение1 мин
Охват и читатели5.3K
Как подружить проект на rest framework с vue? Можно создать в каталоге с django проектом проект на vue с помощью vue-cli. Перейдя в него и набрав yarn build, на выходите получим в каталоге dist файлы index.html и каталоги css и js. Ага, css и js можно положить в static, а из index.html сделать шаблон.
Читать дальше →

О структуре параллельных вычислений или доводы против оператора «Go»

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


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


go myfunc();                                // Golang

pthread_create(&thread_id, NULL, &myfunc);  /* C with POSIX threads */

spawn(modulename, myfuncname, [])           % Erlang

threading.Thread(target=myfunc).start()     # Python with threads

asyncio.create_task(myfunc())               # Python with asyncio

Есть много вариантов нотации и терминологии, но одна семантика — запустить myfunc параллельно основной программе и продолжить родительский поток выполнения (англ. "Control Flow")

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

Точки входа в Python

Время на прочтение6 мин
Охват и читатели35K
Многие думают, что точки входа это такие инструкции в setup.py, которые позволяют сделать пакет доступным для запуска из командной строки. Это, в целом, верно, но возможности точек входа не ограничиваются этим.

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



Осторожно: специфический юмор далее по тексту.
Читать дальше →

10 хитростей Python, о которых полезно знать

Время на прочтение6 мин
Охват и читатели36K
По данным StackOverflow Python — это самый быстрорастущий язык программирования. Например, в одном из отчётов Forbes речь идёт о том, что использование Python выросло на 456%. Python применяется в Netflix, в IBM, и ещё в тысячах компаний по всему миру. Давайте не забывать и о Dropbox. Сервисы этой компании тоже написаны на Python. В соответствии с исследованием Dice, знания в области Python весьма востребованы в наши дни, а индекс популярности языков программирования говорит о том, что Python — это сегодня самый популярный язык в мире. Если сравнить Python с другими языками, то окажется, что у него есть следующие сильные стороны:

  1. Совместимость с подавляющим большинством платформ и операционных систем.
  2. Наличие множества опенсорсных фреймворков и инструментов.
  3. Код, который легко читать и поддерживать.
  4. Надёжная стандартная библиотека.
  5. Стандартный механизм разработки через тестирование.


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

Если данные не помещаются в память. Простейшие методы

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

Самка трубкозуба с детёнышем. Фото: Scotto Bear, CC BY-SA 2.0

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

Проблема в нехватке памяти. Если у вас 16 гигабайт ОЗУ, вы не сможете туда загрузить стогигабайтный файл. В какой-то момент у ОС закончится память, она не сможет выделить новую, и программа вылетит.

Что делать?
Читать дальше →

Способы нахождения цели. Роль случайности

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

1. Введение


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

Целью исследования статьи будет сравнение способов нахождения цели как подвижной (жёлтый объект), так и неподвижной.

Эти способы:

  • Случайный поиск (красный объект)
  • Случайный поиск с памятью (синий объект)
  • Случайный поиск с памятью и иерархией (зелёный объект)
  • Поиск первого маршрута (фиолетовый объект)
  • Поиск короткого маршрута (коричневый объект)

На рис.1 эти объекты показаны. Полностью код программы выложен на github


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

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

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

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


В Python много отличных доступных «из коробки» модулей. Один из самых полезных — collections. Он содержит «специализированные типы для создания контейнеров», являющихся альтернативами универсальным dict, list, set и tuple. Ниже мы рассмотрим три содержащихся в модуле класса, с которыми большинство питонистов сталкивались, но постоянно забывают применять на практике.

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

Алгоритмы поиска объема и центра масс многогранника

Время на прочтение6 мин
Охват и читатели5.8K
Наверное, все знают этот алгоритм, но от меня «власти скрывали». Нашел его словесное описание на третьей странице поисковика в архиве автопереводов англоязычного форума. Мне кажется, его подробное описание (и с кодом) достойно хабростатьи.

Итак, например вам надо генерировать мобов для игрушки и где-то в процессе отсеивать тех, кто не стоит на ногах. Для этого нужно найти центр масс моба (а это почти то же самое, что найти его объем) и убедиться, что он находится где-то над ногами моба.


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

List Comprehension vs Map

Время на прочтение3 мин
Охват и читатели37K
Привет, Хабр. Часто при работе с последовательностями встает вопрос об их создании. Вроде бы привык использовать списковые включения (List Comprehension), а в книжках кричат об обязательном использовании встроенной функции map.

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

image
Читать дальше →

Kivy. Сборка пакетов под Android и никакой магии

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

Во вчерашней статье Python в Mobile development, в которой речь шла о библиотеке KivyMD (коллекции виджетов в стиле Material Design для использования их в кроссплатформенном фреймворке Kivy), в комментариях меня попросили рассказать о процессе сборки пакета для платформы Android. Для многих этот процесс, к сожалению, был и остается чем-то из ряда магического шаманства и не подъёмным для новичков делом. Что ж, давайте разбираться, так ли на самом деле все сложно и действительно ли я маг и волшебник…
Читать дальше →

Как сделать бота, который превращает фото в комикс: пошаговая инструкция для чайников

Время на прочтение5 мин
Охват и читатели21K
Часть первая, дополненная.
Котаны, привет.
Я Саша и я балуюсь нейронками.

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

Инструкций о том, как с нуля обучить и задеплоить свою нейросеть, заодно подружив ее с телеграм ботом.

Инструкций для чайников, вроде меня.
Сегодня мы выберем архитектуру нашей нейросети, проверим ее и соберем свой первый набор данных для обучения.

Выбор архитектуры


После относительно успешного запуска selfie2anime бота (использующего готовую модель UGATIT), мне захотелось сделать то же самое, но свое. Например, модель, превращающую ваши фото в комиксы.

Вот несколько примеров из моего photo2comicsbot, и мы с вами сделаем нечто подобное.
Читать дальше →

Python в Mobile development

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


Ни для кого не секрет, что область применения Python довольно широка: начиная от web-технологий, игровой индустрии и заканчивая проектами NASA. Python работает практически везде: от карманных компьютеров и смартфонов до серверов сети и практически на всех известных платформах, таких как Windows, Linux/UNIX, macOS, Palm OS, Raspberry PI и так далее. Благодаря фреймворку Kivy в 2011 году Python освоил и мобильные платформы в плане разработки приложений под iOS и Android, а в 2015 с помощью библиотеки KivyMD Python научился использовать Material Design.

НеДождь. Модель для сборки. «Нервный Техник» #1 Аппарат для тренировки нейросети изготовлен в кустарной лаборатории

Время на прочтение7 мин
Охват и читатели2K
Хао Дорогой читатель!

Сегодня мы встречаемся не впервые: ушаты помоев объективной критики уже были вылиты хабровчанами на ранее выложенные мной наивные рассуждения об автоматической поэзии. Основными претензиями были «неприменимость этих рассуждений на практике» и «баян». Между строк читалась невероятная сложность, с которой, якобы, сопряжены манипуляции с машинным обучением. Пришло время показать, что всё намного проще, чем это принято считать.
Читать дальше →