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

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

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


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





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

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

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



Каждый может сделать так:
локальный проект → github
С (платным) ssh доступом вы сможете сделать так:
локальный проект → PythonAnywhere
В статье показано как (бесплатно) сделать так:
локальный проект → github → PythonAnywhere
Сначала я перечислю, зачем вам это может быть нужно, а затем перейду к тому как реализовать. Не стесняйтесь просколлить статью, если первая часть вам не интересна.

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

pip install pandas-profiling
или
conda install -c anaconda pandas-profilingДавайте используем набор данных о пассажирах Титаника, чтобы продемонстрировать возможности профайлера.

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