Telegram Web
😱 Обманули с производительностью интерпретатора Python 3.14?

В прошлом месяце команда CPython представила новый интерпретатор с оптимизацией хвостовых вызовов (tail calls), который обещал улучшение производительности на 10-15%.

Однако, как выяснилось, это улучшение было связано с ошибкой в бенчмарках, вызванной регрессией в LLVM 19. При корректных настройках прирост производительности снизился до 1-5%.

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

Библиотека питониста #свежак
😁95👍5🔥1
How to: как создать самоссылочную связь через внешний ключ?

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

👨‍💻 Решение: используйте самоссылочный внешний ключ.

Как это работает:
• Моделируем связь с «линейным менеджером» как внешний ключ, указывая на самого себя (используем self).
• Используем поле line_manager, чтобы задать связь «многие к одному» (снизу вверх).
• Обратную связь можно легко получить с помощью поля direct_reports, которое позволяет найти всех сотрудников, которых управляет данный сотрудник.

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

Библиотека питониста #буст
4👍1🔥1
📊💼 Ситуация на рынке труда в IT в 2025 году: результаты опроса айтишников

Помните мы проводили опрос про рабочие моменты? Пришло время делиться результатами!

В нашем исследовании приняли участие более 1000 IT-специалистов различных направлений. Работа или личная жизнь? Удалёнка или офис? Заменил ли всех ИИ?

➡️ Ответы в подробном отчёте

А какие изменения на IT-рынке замечаете вы? Делитесь в комментариях! 👇

🐸Библиотека devops'a
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🤔1
📝 Структуры данных: ТОП-30 вопросов и ответов для собеседований в 2025 году

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

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

📄 Прочитайте статью и укрепите свои знания https://proglib.io/sh/1uYAygzIxr

Библиотека питониста
5👍3😁1
Команда дня: сравнение объектов с помощью __eq__

В Python, когда вы используете оператор == для сравнения объектов, по умолчанию проверяется, ссылаются ли объекты на один и тот же экземпляр в памяти. Однако, если вы хотите настроить, как должны сравниваться объекты вашего класса, вам нужно переопределить метод ‘__eq__’.

Поведение по умолчанию:

Без переопределения ‘__eq__’, Python сравнивает объекты на основе их ссылок в памяти. То есть, два объекта будут считаться равными только в том случае, если они являются одним и тем же объектом.

Пример:
class MyClass:
def __init__(self, value):
self.value = value

a, b = MyClass(1), MyClass(1)
print(a == b) # False


Здесь, несмотря на то, что у объектов a и b одинаковые значения атрибутов, они считаются неравными, так как это разные экземпляры класса.


С методом ‘__eq__’ (пользовательское сравнение):

Чтобы изменить поведение сравнения объектов, вы можете переопределить метод ‘__eq__’ в вашем классе. Этот метод будет определять, что именно считать равенством для объектов вашего класса.

Пример:
class MyClass:
def __init__(self, value):
self.value = value

def __eq__(self, other):
if isinstance(other, MyClass):
return self.value == other.value
return False

a, b = MyClass(1), MyClass(1)
print(a == b) # True


В этом примере мы определяем, что объекты считаются равными, если их атрибуты value одинаковы. Теперь вывод будет True, так как у a и b одинаковые значения.

Библиотека питониста #буст
👍16🔥21
Чек-лист: 5 приемов ускорения Python

👍 JIT-компиляция с Numba:
Numba — это JIT-компилятор, который переводит код Python в быстрый машинный код. Добавив декоратор @jit, вы можете ускорить вычисления в циклах и операциях с массивами.

Пример:
from numba import jit
import numpy as np
import time

@jit(nopython=True)
def sum_squares(arr):
total = 0
for i in range(arr.shape[0]):
total += arr[i] * arr[i]
return total

data = np.arange(1000000)
start = time.time()
result = sum_squares(data)
end = time.time()
print("Numba JIT:", result, "Time:", end - start)


Результат
: прирост производительности до 10-30 раз.

👍 Многозадачность:
Python ограничивает многозадачность из-за GIL, но для вычислительно сложных задач можно использовать многопроцессорность, чтобы обойти это ограничение.

Пример:
import multiprocessing as mp

def process_image(image):
return image ** 2

if __name__ == '__main__':
images = range(20)
with mp.Pool(mp.cpu_count()) as pool:
results = pool.map(process_image, images)
print(results)


👍 Cython и PyPy:
Cython компилирует Python в C, что ускоряет выполнение кода. PyPy — это JIT-компилятор, который улучшает производительность без изменения кода.

Пример: С использованием Cython можно ускорить код, написав его в файле .pyx, а с PyPy просто сменив интерпретатор.

👍 Правильные структуры данных:
Используйте более эффективные структуры данных, такие как массивы NumPy, вместо списков Python для числовых вычислений. Это ускоряет выполнение и экономит память.

Пример:
import numpy as np
data = np.arange(1000000)
result = data * 2


Векторизация операций с NumPy может быть в 50 раз быстрее.

👍 Инструменты профилирования:
Профилирование помогает понять, какие части кода нуждаются в оптимизации. Используйте cProfile и line_profiler для анализа производительности.

Пример:
import cProfile

def heavy_computation():
return sum([i * i for i in range(1000000)])

cProfile.run('heavy_computation()')


Это поможет найти узкие места и ускорить работу.

Библиотека питониста #буст
👍213🔥3
🔥 Делимся Python-репозиториями

Давайте обсудим самые интересные и полезные Python-репозитории!

✔️ Какие репозитории вы используете чаще всего?
✔️ Какие проекты вас впечатлили, но пока не получили широкой известности?
✔️ Какой Python-репозиторий можно поковырять для удовольствия?

Библиотека питониста #междусобойчик
5👍2🔥1
🎙️ Подкаст: когда не стоит начинать с юнит-тестов

Всегда ли тестирование начинается с юнит-тестов? Или иногда лучше сразу писать интеграционные или end-to-end тесты?

В новом выпуске The Real Python Podcast вы узнаете:

🔸 С чего лучше начинать тестирование кода
🔸 Как использовать pytest для интеграционных тестов
🔸 Что важно при создании тестового набора
🔸 Когда юнит-тесты действительно необходимы

🔗 Подкаст доступен по ссылке: https://clc.to/rcPHEw

Библиотека питониста #буст
👍71
Нужна ли математика программисту

Можно ли стать разработчиком, если в школе ненавидел математику? А если наоборот — тащился от алгебры и геометрии, но кодить не умеешь? Эта статья раскладывает всё по полочкам: где без математики никуда, а где можно и без неё.

➡️ Что внутри:

✓ Почему все считают, что программисты — математики

✓ В каких сферах разработки можно вообще не знать математику

✓ Где хватит готовых библиотек, а где придётся разбираться в формулах

✓ Какие области программирования требуют мощного математического бэкграунда

✓ Что делать, если математика — это боль, но хочется освоить ML или Data Science

✓ Топ книг, которые помогут понять и даже полюбить математику

🔵 Чтобы знать математику, забирайте наш курс → «Математика для Data Science»

📎 Читать статью

Proglib Academy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53
Когда изучить, как оно работает, в шаге от тебя, но ты снова выбираешь путь страданий... 😭

Библиотека питониста #развлекалово
😁15💯53
📊 Тестовые задания — любовь или боль?

По данным исследования, 81% IT-специалистов в России просто игнорируют вакансии с тестовыми заданиями. Программисты оказались самыми «неприступными» — только 19% согласны их выполнять.

😆 Только тестировщики, которые сами по долгу службы гоняют тесты, готовы пройти их ради работы (63%). Профессиональная эмпатия?

Как вы относитесь к тестовым заданиям при трудоустройстве? Делитесь мнением в комментах! 👇

🔥 — готов(-а) выполнить, если вакансия интересная
👍 — только если тестовое оплачивается
🌚 — игнорю такие вакансии сразу
🤔 — я уже делал(-а) тестовое, а его использовали в проде бесплатно

Библиотека питониста #междусобойчик
🔥43🌚18👍14🤔5
🐍 Твой Python-код жрёт память? 11 способов это исправить!

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

👉 Читать статью

Библиотека питониста
👍10😁1
🐍 Новости недели

🔹 PEP 736 отклонён — предложение о краткой записи именованных аргументов отвергнуто.
🔹 Polars Cloud — новый облачный сервис для удалённого выполнения запросов.
🔹 Опасные PyPI-пакеты — вредоносные библиотеки похитили облачные токены 14 100 пользователей.
🔹 Ошибка в бенчмарках CPython 3.14 — прирост производительности tail-call интерпретатора завышен из-за некорректных тестов.
🔹 Django на FOSDEM 2025 — секция «Inclusive Web» о доступности и инклюзивности в вебе.

🎥 Что посмотреть:
🔹 Создание Google Docs с Python
🔹 12 встроенных функций Python

🛠 Полезности:
🔹 Справочник инструментов разработчика Python

📚 Что почитать:
🔹 Анонимный чат в Telegram: бот с MiniApp интерфейсом
🔹 Как работают dict, slots и weakref
🔹 Аннотации типов
🔹 Python-разработчик изучает C++

🏗 Репозитории:
🔹 Pydoll — автоматизация браузеров
🔹 Nodezator — графический редактор узлов
🔹 phmutest — отладка неработающих примеров в Markdown

Библиотека питониста #свежак
👍7❤‍🔥21
Это база: быстрая проверка списка на пустоту

При проверке списка на пустоту часто используют два варианта:

Pythonic способ:
if not mylist:


Медленный способ:
if len(mylist) == 0:


Хотя оба варианта работают, первый быстрее почти в 2 раза!

if not mylist быстрее, потому что:
✔️ Использует 2 инструкции виртуальной машины (LOAD_GLOBAL, TO_BOOL).
✔️ Инструкция TO_BOOL_LIST оптимизирована под списки и читает размер за 1 операцию.

if len(mylist) == 0 медленнее, потому что:
📍 Требует 5 инструкций (LOAD_GLOBAL, LOAD_FAST, CALL, LOAD_CONST, COMPARE_OP).
📍 Вызывает len(), что добавляет функциональные вызовы и лишние обращения к памяти.

Вывод:
Используйте if not mylist — это и короче, и быстрее. Особенно важно в критичных к скорости местах кода!

👉 Подробности можно узнать в детальной статье: https://clc.to/rd3OQg

Библиотека питониста #буст
21👍14😁4😢1🥱1
Что выведет код сверху?

👾 — 9
👍 — 6
🥰 — 4
🤔 — Error

Библиотека задач по Python
🤔73🥰51👍38👾3
🚀 Вышел NumPy 2.2.4

Свежий патч-релиз NumPy 2.2.4 включает важные исправления ошибок и значительные улучшения в системе типов. Также обновлена поддержка платформ.

Основные фиксы:
✔️ Исправлены ошибки в numpy.loadtxt, np.nonzero, bincount, searchsorted
✔️ Улучшена безопасность многопоточного выполнения
✔️ Исправлена сборка на s390x с clang
✔️ Обновлена поддержка FreeBSD и тестов на QEMU
✔️ Существенные улучшения типизации

Ссылка на релиз: https://clc.to/4AxrTw

Вы обновляетесь на патч-релизы вроде 2.2.4 или ждёте крупных обновлений, таких как 2.3 или 2.4?

👍 Обновляемся на патчи
🤔 Ждём крупных релизов

Библиотека питониста #свежак
👍15🤔73
❗️Вакансии «Библиотеки программиста» — ждем вас в команде!

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

Подробности тут

Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴

Ждем ваших откликов 👾
👍3
🧠 Шпаргалка по алгоритмам

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

Внутри:
🔹 Разбор основных структур данных
🔹 Популярные алгоритмы и их применение
🔹 Советы по оптимизации решений
🔹 Подходы к решению задач на кодинг-интервью

Ссылка на репозиторий: https://clc.to/_fEkZg

Библиотека питониста #буст
👍91
Media is too big
VIEW IN TELEGRAM
🧑‍💻 Какой язык программирования учить в 2025 году

Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
👍162
2025/07/14 09:51:02
Back to Top
HTML Embed Code: