Книга Тиаго Антао «Сверхбыстрый Python»

Недавно дочитал книгу Тиаго Антао, которая в русскоязычном варианте называется «Сверхбыстрый Python», а в оригинале более скромно — «Fast Python». Ее подзаголовок — «Эффективные техники для работы с большими наборами данных». Сразу скажу, что книга мне очень понравилась и я ее всячески рекомендую тем, кто занимается обработкой данных или большими вычислениями с использованием Python.

Как известно, Python обладает репутацией медленного языка, и к сожалению, заслуженно. Его главное преимущество — это удобство работы. Но иногда требуется скорость, которую чистый Python обеспечить не может, а переписывать всю программу на C / C++ / Rust не хочется. К счастью, для таких случаев в Python есть обходные пути, позволяющие вроде бы писать на языке Python (или его подобии), но при этом значительно повысить скорость расчета или обработки данных. Тут надо оговориться, что книга посвящена приемам и библиотекам, работающим с реализацией CPython, не затрагивая другие реализации Python, такие как PyPy, IronPython, JPython и др.

По сути эта книга является сборником приемов, позволяющих подойти с разных сторон к решению задач оптимизации работы скриптов на Python. В основном внимание сосредоточено не на сложные математические вычисления, а на обработку больших данных. Каждая глава посвящена своей теме: асинхронное и многопроцессное программирование, использованию таких инструментов как Cython (не путайте с CPython) и Numba для компиляции скрипта в более низкоуровневый код, использованию видеокарт и распределенных вычислений. И везде на очень простых примерах, как правило не превышающих страницу, автор показывает основные идеи, используя разные библиотеки, и сравнивая между собой разные решения одной и то же задачи по скорости выполнения.

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

Далее я коротко пробегусь по главам книги и расскажу о чем они.

Читать далее ‘Книга Тиаго Антао «Сверхбыстрый Python»’ »

Книжные итоги 2023

Книжные итоги 2023

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

Читать далее ‘Книжные итоги 2023’ »

Переписал еще одну статью про Matplotlib

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

Новую версию по сути переписанной заново статьи вы можете прочитать по ссылке — Как рисовать графики в разных окнах.

Все статьи про рисование графиков в Python с помощью библиотеки Matplotlib можно увидеть по ссылке — Использование библиотеки Matplotlib.

Новая версия статьи про Matplotlib

Переписал еще одну древнюю статью про использование библиотеки Matplotlib — Применение объектно-ориентированного стиля.

В ней рассказывается о том, какие есть способы ее использования, начиная с устаревшего модуля pylab, использование функций из модуля matplotlib.pyplot и использование более низкоуровневых объектов Figure, Axes, Line2D, Legend и др.

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

Продолжаю обновлять старые статьи про библиотеку Matplotlib для построения графиков на Python.

В этот раз практически полностью переписал статью про то, как работать с календарными данными, откладываемыми по оси.

С момента написания первоначальной версии статьи прошло 10 лет (ужас какой!) и принципы работы с календарными данными в Matplotlib кардинально изменились (в лучшую сторону). Старые примеры там вообще уже не работали, и не только потому, что были рассчитаны на Python 2.x, но еще потому, что из Matplotlib одни используемые функции исчезли, а другие стали считаться устаревшими. Кроме того, внешний вид графиков в новых версиях Matplotlib намного симпатичнее.

OutWiker, Flatpak и WebKitGTK

OutWiker, Flatpak и WebKitGTK

Этот пост можно считать продолжением предыдущего, в котором я рассказывал о работе OutWiker в виде flatpak-пакета под Linux. В том посте я обещал рассказать о том, почему OutWiker до сих пор собиралась со старой версией runtime, а если быть более корректным, со старыми версиями org.gnome.Platform и org.gnome.Sdk, и как на днях эта проблема внезапно решилась, благодаря чему следующие версии OutWiker уже будут собираться со свежими версиями этих библиотек.

Чтобы понять, в чем заключается проблема, я нарисовал схему зависимостей OutWiker от библиотек, которую сейчас подробно опишу:

Читать далее ‘OutWiker, Flatpak и WebKitGTK’ »

Flatpak. Решение проблемы с долгим запуском приложений

Flatpak. Решение проблемы с долгим запуском приложений

Если вы читаете меня в Телеграм-канале (а если нет, то это повод начать), то уже читали пост о том, что после недавнего крупного обновления Manjaro Linux (на основе Arch Linux) у меня сломался OutWiker — возникли проблемы flatpak-пакетом, и даже из исходников его еле удалось запустить. Если еще не читали, то вот ссылки на начало и продолжение (в один пост не уместилось). Теперь я начинаю разгребать последствия.

Читать далее ‘Flatpak. Решение проблемы с долгим запуском приложений’ »

Про книгу Энтони Шоу «Внутри CPython»

После того, как более-менее освоишь какой-либо инструмент, которым постоянно пользуешься, полезно заглянуть в его «внутренности», чтобы его работа не воспринималась как магия, которая каким-то неведомым образом что-то делает. Поэтому, когда вышла книга Энтони Шоу «Внутри CPython», я ее сразу заказал. На днях я ее дочитал и расскажу о ней в этом посте.

Сразу определимся с терминологией, чтобы было ясно, о чем книга. CPython (не путайте с Cython) — это эталонная реализация Python, которая написана на языке C. Собственно, это и есть тот самый интерпретатор Python, которым пользуются большинство питонистов. Как вы, наверное, знаете, есть и другие интерпретаторы Python, написанные на других языках. Например, PyPy (интерпретатор, написанный на Python), IronPython (реализация Python под платформу .NET), Jython (реализация на Java). В данной же книге речь идет о всем знакомом интерпретаторе, а не о каком-то экзотическом (да простят меня пользователи перечисленных выше реализаций).

Сразу скажу, что книга оставила у меня неоднозначное впечатление. Наверное, я ожидал от нее чуть более высокоуровневого описания работы Python, надеялся, что больше будет написано про байт-код и его ассемблерные команды. В реальности книга представляет собой обзорную экскурсию по исходникам интерпретатора Python. На самом деле это тоже любопытно, но эти знания более удалены от практики применения Python. Эту книгу можно посоветовать тем, кто хочет начать участвовать в разработке CPython. К сожалению, она уже начала устаревать. В ней речь идет о Python 3.9, и когда я ее начал читать, то решил, что я буду смотреть в исходники Python 3.11, но там уже некоторых файлов не стало, а какие-то были переименованы. Особенно это касается частей кода, связанных с парсером. О некоторых подобных изменениях автор предупреждает, говоря о том, что парсер был переписан, но в Python 3.9 можно было найти обе версии, а в 3.11 осталась только новая. С другой стороны, это был тоже любопытный квест, искать куски кода, если указанного файла нет.

Читать далее ‘Про книгу Энтони Шоу «Внутри CPython»’ »

Еще одно обновление статей про Matplotlib

Обновил и во многом дополнил очередную статью из серии статей про использование библиотеки Matplotlib, предназначенной для построения графиков на Python.

В этот раз обновлению подверглась статья Создание интерфейса средствами библиотеки Matplotlib, в которой рассказывается о том, как в окно с графиком можно добавить элементы управления (виджеты). В Matplotlib их не так много: кнопка, поле ввода, два вида ползунков, переключатели (radio buttons) и флажки (check buttons), но для многих задач этого будет достаточно, чтобы обойтись только библиотекой Matplotlib без сторонних библиотек для создания GUI.

Кстати, про внедрение графиков Matplotlib в интерфейс программы, написанной на wxPython у меня тоже была статья.

Новая версия статьи про Matplotlib

Очень неспешно продолжаю обновлять свои старые статьи про Matplotlib. Сегодня исправил статью Как обрабатывать события мыши и клавиатуры на графиках Matplotlib. Эта статья будет полезна, если вы захотите добавить немного интерактива для ваших графиков. Например, последний пример статье показывает, как можно добавлять на график метки с координатами (в системе координат осей), куда кликнул пользователь.

Дело близится к финалу, осталось поправить (читай, переписать) три статьи.

Полный список статей про Matplotlib можно найти на этой странице сайта.