Обновить
1024K+

Python *

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

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

Действительно ли Python GIL уже мертв?

Время на прочтение8 мин
Охват и читатели26K
Всем привет! Уже в следующий понедельник начинаются занятия в новой группе курса «Разработчик Python», а это значит, что у нас есть время для публикации еще одного интересного материала, чем мы сейчас и займемся. Приятного прочтения.



В далеком 2003 году Intel выпустил новый процессор Pentium 4 “HT”. Этот процессор разгонялся до 3ГГц и поддерживал технологию гиперпоточности.

Распознавание источников освещения на картах окружения

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

В этой статье представлена реализация на Python алгоритма распознавания источников освещения на картах окружения (LDR или HDR) при помощи равнопромежуточной проекции (equirectangular projection). Однако после внесения незначительных изменений её также можно использовать с простыми фоновыми изображениями или кубическими картами. Примеры возможного применения алгоритма: программы трассировки лучей, в которых требуется распознавать первичные источники освещения для испускания из них лучей; в растеризованных рендерерах он может применяться для отбрасывания теней, использующих карту окружения; кроме того, алгоритм также можно применять в программах устранения засветов, например в AR.

Алгоритм состоит из следующих этапов:

  1. Снижение разрешения исходного изображения, например, до 1024.
  2. Преобразование изображения в яркость (luminance), при необходимости с размытием изображения.
  3. Применение метода квази-Монте-Карло.
  4. Преобразование из сферических координат в равнопромежуточные.
  5. Фильтрация сэмплов на основании яркости соседа.
  6. Сортировка сэмплов на основании их яркости.
  7. Фильтрация сэмплов на основании евклидовой метрики.
  8. Слияние сэмплов при помощи алгоритма Брезенхэма.
  9. Вычисление позиции кластера освещения на основании его яркости.

Существует множество алгоритмов снижения разрешения изображений. Билинейная фильтрация — самый быстрый или простой в реализации, к тому же он лучше всего подходит в большинстве случаев. Для преобразования яркости и в LDR-, и HDR-изображениях можно использовать стандартную формулу:

  lum = img[:, :, 0] * 0.2126 + img[:, :, 1] * 0.7152 + img[:, :, 2] * 0.0722

Дополнительно можно применить к изображению яркости небольшое размытие, например, в 1-2 пикселя для изображения разрешением 1024, для устранения всех высокочастотных деталей (в частности, вызванных снижением разрешения).
Читать дальше →

Python + Pyside2 или просто «Калькулятор»

Время на прочтение9 мин
Охват и читатели48K
Привет, Хабр!

Меня зовут Саша. Я Junior разработчик. Работаю тестировщиком ПО. В основном я пишу тесты при помощи Python+Selenium, но Python стал настолько интересен, что мне захотелось углубиться в него и выучить как можно больше фреймворков! Я захотел написать десктопное приложение, аля простой «Калькулятор». Мой выбор пал на Pyside2. Я не претендую на идеальный код или урок. Просто есть желание поделиться опытом, если кто-то, как и я, хочет начать шарить в Python. Если кому-то помогу — результата я достиг.

Начнем!
Читать дальше →

Data Science Digest (July 2019)

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


Приветствую всех!

Лето в полном разгаре, и если вы планируете быть в Одессе 5-го июля, приглашаю вас на ODS митап и дата-бар, который организовывает одесская ODS.ai команда. Напоминаю, что у дайджеста есть свой Telegram-канал и страницы в соцсетях (Facebook, Twitter, LinkedIn, Medium), где я ежедневно публикую ссылки на полезные материалы. Присоединяйтесь!

А пока предлагаю свежую подборку материалов под катом.
Читать дальше →

Достать worklog из Jira

Время на прочтение1 мин
Охват и читатели8.7K
Всем привет, недвано я писал про api клиент для Jira. Разбираться с ним я начал, когда возникла необходимость автоматизировать формирование отчета по времени(отчеты нужны заказчику). В итоге получися небольшой инструмент который позволяет быстро и легко вытаскивать необходимые данные.

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

Объединение нескольких пакетов в одно пространство имен Python

Время на прочтение4 мин
Охват и читатели9.3K
Иногда возникает необходимость разделить несколько пакетов, лежащих в одном пространстве имен по разным физическим путям. Например, если вы хотите иметь возможность передавать разную компоновку плагинов, имея возможность в последствии добавлять их, не контролируя их расположение, и, при этом, обращаться к ним через один namespace.

Эта шпаргалка, которая подойдет скорее для новичков, посвящена пространствам имен Python.

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

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

Таблица умножения в одну строку

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

На картинке вы видите обычную таблицу умножения, которая, думаю, всем хорошо знакома.
Ничего особенного в ней нет, кроме того, что весь алгоритм ее построения сжат до одной стандартной Python’овской строки в 79 символов (см. PEP8). Кому интересно добро пожаловать под кат.
Читать дальше →

Python в Visual Studio Code — июньский релиз

Время на прочтение3 мин
Охват и читатели16K
Мы рады сообщить, что расширение Python для Visual Studio Code от июня 2019 года уже доступно. Вы можете загрузить расширение Python из Marketplace или установить его прямо из галереи расширений в Visual Studio Code. Если у вас уже установлено расширение Python, вы также можете получить последнее обновление, просто перезапустив Visual Studio Code. Узнать больше о поддержке Python в Visual Studio Code можно в документации.

В этом выпуске мы внесли улучшения, которые перечислены в нашем журнале изменений, решив в общей сложности 70 проблем, включая связанные со средством просмотра графиков с окном Python Interactive и параллельными тестами с pytest. Обо всех изменениях читайте под катом.

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

Нейросети и глубокое обучение, глава 2: как работает алгоритм обратного распространения

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

В прошлой главе мы видели, как нейросети могут самостоятельно обучаться весам и смещениям с использованием алгоритма градиентного спуска. Однако в нашем объяснении имелся пробел: мы не обсуждали подсчёт градиента функции стоимости. А это приличный пробел! В этой главе я расскажу быстрый алгоритм для вычисления подобных градиентов, известный, как обратное распространение.

Впервые алгоритм обратного распространения придумали в 1970-х, но его важность не была до конца осознана вплоть до знаменитой работы 1986 года, которую написали Дэвид Румельхарт, Джоффри Хинтон и Рональд Уильямс. В работе описано несколько нейросетей, в которых обратное распространение работает гораздо быстрее, чем в более ранних подходах к обучению, из-за чего с тех пор можно было использовать нейросеть для решения ранее неразрешимых проблем. Сегодня алгоритм обратного распространения – рабочая лошадка обучения нейросети.
Читать дальше →

На пути к ядру Питона

Время на прочтение7 мин
Охват и читатели8.3K
Привет, Хабр! Представляю вашему вниманию перевод статьи Toward a “Kernel Python” автора Glyph Lefkowitz (создателя фреймворка Twisted).

Подробнее — под катом.
Читать дальше →

Что я узнал про оптимизацию в Python

Время на прочтение12 мин
Охват и читатели19K
Всем привет. Сегодня хотим поделиться еще одним переводом подготовленным в преддверии запуска курса «Разработчик Python». Поехали!



Я использовал Python чаще, чем любой другой язык программирования в последние 4-5 лет. Python – преобладающий язык для билдов под Firefox, тестирования и инструмента CI. Mercurial также в основном написан на Python. Множество своих сторонних проектов я тоже писал на нем.

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

Мой опыт с Python в основном связан с интерпретатором CPython, в особенности CPython 2.7. Не все мои наблюдения универсальны для всех дистрибутивов Python или же для тех, которые имеют одинаковые характеристики в сходных версиях Python. Я постараюсь упоминать об этом во время повествования. Помните о том, что эта статья не является детальным обзором производительности Python. Я буду говорить только о том, с чем сталкивался самостоятельно.
Читать дальше →

Мелкая питонячая радость #5: Dynaconf — управление настройками в проекте

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

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


К популярным темам относятся вопросы:


  • Надо ли вообще этот проект писать на Python?
  • Какой фреймворк взять для разработки?
  • Кто быстрее, библиотека X или библиотека Y?

Сегодня я попробую аккуратно подковырнуть как раз одну из таких магических тем — вопрос "Как управлять конфигами в проекте?".


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

Реализация целого типа в CPython

Время на прочтение7 мин
Охват и читатели16K
На Хабре уже были статьи о подробностях реализации менеджера памяти CPython, Pandas, я написал статью про реализацию словаря.

Казалось бы, что можно написать про обычный целочисленный тип? Однако тут не всё так просто и целочисленный тип не такой уж и очевидный.

Если вам интересно, почему x * 2 быстрее x << 1.

И как провернуть следующий трюк:

>>> 42 == 4
True
>>> 42
4
>>> 1 + 41
4

То вам стоит ознакомиться с данной статьёй.
Читать дальше →

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

Скачиваем аудио вконтакте через клиентский js или расширение файлов .m3u8

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

Как все начиналось...


Как всегда, зависая вконтакте, я решил скачать пару новых аудиозаписей на комп. Но меня ждало разочарование: аудиозаписи возвращались в каком-то странном формате: m3u8. Этот формат даже vlc media pleyer не воспроизводил, и я стал думать, что делать…
Читать дальше →

Автоматическое назначение задач в Jira с помощью ML

Время на прочтение12 мин
Охват и читатели12K
Привет, Хабр! Меня зовут Саша и я backend разработчик. В свободное от работы время я изучаю ML и развлекаюсь с данными hh.ru.

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

В hh.ru есть внутренняя служба, на которую в Jira создаются задачи (внутри компании их называют HHS), если у кого-то что-то не работает или работает неправильно. Дальше эти задачи вручную обрабатывает руководитель группы QA Алексей и назначает на команду, в чью зону ответственности входит неисправность. Лёша знает, что скучные задачи должны выполнять роботы. Поэтому он обратился ко мне за помощью по части ML.


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

QVD-файлы — что внутри, часть 3

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

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


Итак (вспоминаем) QVD-файл соответствует реляционной таблице, в QVD файле таблица хранится в виде двух косвенно связанных частей:


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


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

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

Как настроить инфраструктуру веб-аналитики за $100 в месяц

Время на прочтение6 мин
Охват и читатели8.4K
Рано или поздно почти любая компания сталкивается с проблемой развития веб-аналитики. Это не значит, что нужно только поставить код Google Analytics на сайт — нужно найти пользу в полученных данных. В этом посте я расскажу, как это сделать максимально эффективно, затратив незначительные (по меркам профильных сервисов) деньги.

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

Деплоим на PythonAnywhere из GitHub

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



Каждый может сделать так:


локальный проект → github


С (платным) ssh доступом вы сможете сделать так:


локальный проект → PythonAnywhere


В статье показано как (бесплатно) сделать так:


локальный проект → github → PythonAnywhere


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

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

10 фич для ускорения анализа данных в Python

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

Источник

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


1. Профилирование Pandas Dataframe


Профилирование помогает лучше понять наши данные, и пакет Pandas Profiling создан как раз для этого. Библиотека даст возможность просто и быстро выполнить разведочный анализ Pandas Dataframe. Обычно в таких случаях в качестве первого шага используются функции df.describe() и df.info(), но они сообщают мало и плохо справляются с большими наборами данных. Одна строка кода с использованием Pandas Profiling, напротив, выведет много информации в интерактивном HTML-отчете.


Вот что вычисляется для заданного набора данных:


Статистика выводимая Pandas Profiling.

Установка


pip install pandas-profiling
или
conda install -c anaconda pandas-profiling

Использование


Давайте используем набор данных о пассажирах Титаника, чтобы продемонстрировать возможности профайлера.

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

Как решить старую задачу с помощью ML на Python и .Net

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


Бывает, что некоторые задачи преследуют тебя много лет. Для меня такой задачей стала склейка предложений текстов, в которых жестко забит переход на новую строку, а часто еще и перенос слов. На практике, это извлеченный из PDF или с помощью OCR текст. Часто можно было встретить такие тексты на сайтах он-лайн библиотек, в архивах старых документов, которые редактировались еще DOS-редакторами. И такое форматирование очень мешает затем правильной разбивке на предложения (а с переносами — и на токены) для последующей NLP-обработки. Да и банально показать такой документ в поисковой выдаче — будет некрасиво.


Решал я эту задачу несколько раз — на Delphi, C#. Тогда это был жесткий алгоритм, где руками прописывал, например, какая может быть ширина текста, чтобы этот текст считался отформатированным "по-старому". Не всегда это срабатывало идеально, но в общем, хватало.

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