Python

Django, Flask, ORM, инструменты и библиотеки

Есть ли разница между типами, созданными с помощью namedtuple и NamedTuple?

Сравниваем типы, созданные с использованием typing.NamedTuple и collections.namedtuple. Хотя получившийся код будет работать во всех случаях одинаково, есть несколько нюансов, о которых стоит знать.

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

Сортировка списка элементов, заданных парой чисел, по принципу последовательного сходства

Как отсортировать элементы в списке так, чтобы сумма квадратов разностей «концов» элементов была минимальной? Проблема напоминает задачу коммивояжера. Рассмотрим приблизительное решение.

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

Алгоритм поиска наиболее повторяющейся последовательности в строке (тандемные повторы)

Требуется найти наиболее повторяемую последовательность в строке. Под повторениями имеется в виду любая непрерывная комбинация символов (тандемный повтор). Как это сделать?

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

Способ разбить список на вложенные списки по заданным элементам в начале и конце

Имеется список:

lst = ['hello', 'foo', 'test', 'world', 'bar', 'idk']

Требуется разбить его на вложенный список с элементом «foo» в начале и «bar» в конце. В результате должно получиться:

lst = ['hello', ['foo', 'test', 'world', 'bar'], 'idk']
Читать дальше

О преимуществах использования socket.sendfile () при отправке байтов в удаленный сокет

В статье объясняется, почему в задачах, связанных с отправкой байтов в удаленный сокет, выгодно использовать socket.sendfile() вместо чтения с помощью read() и отправки с использованием send().

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

Как определить формат файла с помощью Python?

Поговорим на тему определения формата файла на основе содержания. В статье — обзор различных вариантов. Представлены специализированные библиотеки и пример вызова стандартной утилиты Unix для работы с типами файлов из Python.

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

Добавление временной составляющей к данным с помощью Temporal SQLAlchemy

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

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

Классическому pip приближается замена — Pipfile и Pipenv

Не секрет, что в классическом менеджере зависимостей pip есть такие недостатки, как необходимость использования инструмента отдельно от virtualenv или потребность иметь несколько requirements.txt. Файл Pipfile и инструмент Pipenv элегантно решают эти проблемы.

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

FlashText — библиотека для эффективной замены и извлечения слов из последовательностей

Познакомился недавно с библиотекой, реализованной на чистом Python, которая работает быстрее, чем regex для задач, связанных с извлечением и заменой ключевых слов в тексте. Статья рассказывает, как работает flashtext и за счет чего достигается высокая эффективность.

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

Типичные ошибки при разработке высоконагруженных проектов на Python

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

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

WSCeleryActivity — быстрые уведомления об активных задачах Celery с помощью WebSocket

Я развиваю внутренний Django-проект, в котором активно используется очередь Celery. Специфика проекта подразумеват, что пользователь закрытой области (администратор) должен быть в курсе, какие задачи в данный момент времени Celery выполняет. Достаточно иметь под рукой только их названия. В интерфейсе предусмотрен блок, который отображает список активных в данный момент задач (уникальные названия без детализации по исполнителям). С использованием лонг-пуллинга данные периодически обновляются. Со временем стали проявляться такие недостатки, как задержка между событием и уведомлением, входящий трафик на сервер. Поскольку поддержка WebSocket в современных браузерах достаточно хорошая, было принято решение реализовать WebSocket-сервер.

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

Управление пакетами с помощью Conda

Все чаще среди Python-разработчиков заходит речь о менеджере пакетов Conda. JetBrains включил этот инструмент в состав PyCharm. Давайте разберемся, чем Conda лучше pip и что представляет собой рабочий процесс с Conda.

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