24940
Вопросы с собеседований по Python @workakkk - админ @machinelearning_interview - вопросы с собесдований по Ml @pro_python_code - Python @data_analysis_ml - анализ данных на Python @itchannels_telegram - 🔥 главное в ит РКН: clck.ru/3FmrFd
🧠 Интерактивная 3D-визуализация нейронных сетей с Neuraxon
Neuraxon — это биовдохновленная нейронная сеть, использующая тринарную логику для моделирования динамики нейронов. С помощью интерактивного интерфейса пользователи могут настраивать сети, управлять состояниями нейронов и наблюдать за нейромодуляцией в реальном времени.
🚀 Основные моменты:
- 🧩 Создание пользовательских сетей с настройками нейронов и синапсов
- 🎮 Интерактивное управление состояниями нейронов
- 🔬 Живое изменение уровней нейромодуляторов
- 📊 3D визуализация нейронной активности
- ⚙️ Предустановленные конфигурации для различных сценариев
📌 GitHub: https://github.com/DavidVivancos/Neuraxon
#python
Добавь AI в свой Python-проект за 7 недель
На Stepik вышел курс «LangChain: с нуля до продакшн LLM приложений»:
✅ RAG-поиск по документам (FAQ-бот, база знаний)
✅ Агенты для анализа данных (CSV, JSON через Pandas)
✅ API на FastAPI с LLM под капотом
Не нужно становиться ML-инженером — интегрируешь LLM как обычный сервис.
Практика • Код из коробки • Сертификат Stepik
Скидка 25% — 3 дня 🔥
Пройти курс со скидкой
🔥 Подборка полезных ресурсов для программистов.
Здесь ты найдёшь всё это - коротко, по делу и без воды.
Пока другие ищут, где “подглядеть решение”, ты уже используешь самые свежие инструменты!
AI: t.me/ai_machinelearning_big_data
Python: t.me/pythonl
Linux: t.me/linuxacademiya
Devops: t.me/DevOPSitsec
Собеседования DS: t.me/machinelearning_interview
C++ t.me/cpluspluc
Docker: t.me/DevopsDocker
Хакинг: t.me/linuxkalii
Data Science: t.me/data_analysis_ml
Javascript: t.me/javascriptv
C#: t.me/csharp_1001_notes
Java: t.me/java_library
Базы данных: t.me/sqlhub
Python собеседования: t.me/python_job_interview
Мобильная разработка: t.me/mobdevelop
Golang: t.me/Golang_google
React: t.me/react_tg
Rust: t.me/rust_code
ИИ: t.me/vistehno
PHP: t.me/phpshka
Android: t.me/android_its
Frontend: t.me/front
Big Data: t.me/bigdatai
МАТЕМАТИКА: t.me/data_math
Kubernets: t.me/kubernetc
Разработка игр: /channel/gamedev
Haskell: t.me/haskell_tg
Физика: t.me/fizmat
💼 Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi
Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy
Папка ML: /channel/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: /channel/addlist/mzMMG3RPZhY2M2Iy
Папка Linux:/channel/addlist/w4Doot-XBG4xNzYy
😆ИТ-Мемы: t.me/memes_prog
🇬🇧Английский: t.me/english_forprogrammers
🧠ИИ: t.me/vistehno
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
📕Ит-книги бесплатно: /channel/addlist/BkskQciUW_FhNjEy
Сохрани себе, чтобы не потерять!
Как загрузить файл по SSH с помощью #Python и paramiko 🐍🔥
Читать полностью…
🔍Тестовое собеседование на Middle Python с Senior из X5 уже завтра!
Уже завтра(11 ноября) в 19:00 по мск приходи онлайн на открытое собеседование, чтобы посмотреть на настоящее интервью на Middle Python-разработчика.
Как это будет:
📂 Олег, старший разработчик в X5, будет задавать реальные вопросы и задачи разработчику-добровольцу
📂 Олег будет комментировать каждый ответ респондента, чтобы дать понять чего от вас ожидает собеседующий на интервью
📂 В конце можно будет задать любой вопрос Олегу
Это бесплатно. Эфир проходит в рамках менторской программы от ШОРТКАТ для Python-разработчиков, которые хотят повысить свой грейд, ЗП и прокачать скиллы.
Переходи в нашего бота, чтобы получить ссылку на эфир → @shortcut_py_bot
Реклама.
О рекламодателе.
Возможности Python реально впечатляют 😱
Читать полностью…
⚡️ Хитрая задача на Python: кратчайший подмассив с суммой ≥ K (O(n))
Задача. Дан массив A (могут быть отрицательные) и K. Найти минимальную длину подмассива с суммой ≥ K. Если нет — вернуть -1.
Подвох. С отрицательными числами не работает двухуказательную. Решение — префиксные суммы + монотонная дека.
Идея.
Пусть P[i] — префиксная сумма до i. Нам нужно минимизировать i - j при условии P[i] - P[j] ≥ K.
Храним индексы j в деке так, что значения P[j] строго возрастают:
- Пока текущий P[i] − P[deque[0]] ≥ K — обновляем ответ и выкидываем голову (нашли короткий кандидат).
- Пока P[i] ≤ P[deque[-1]] — выкидываем хвост (бессмысленные, более «жирные» префиксы).
- Затем добавляем i.
Сложность: каждый индекс заходит/вылетает из деки по разу → O(n).
Короткая реализация
from collections import deque
from math import inf
from typing import List
def shortest_subarray_at_least_k(A: List[int], K: int) -> int:
P = [0]
for x in A: P.append(P[-1] + x)
dq, ans = deque(), inf # dq хранит индексы префиксов, их суммы возрастают
for i, s in enumerate(P):
while dq and s - P[dq[0]] >= K:
ans = min(ans, i - dq.popleft())
while dq and P[dq[-1]] >= s:
dq.pop()
dq.append(i)
return -1 if ans is inf else ans
# Примеры
if __name__ == "__main__":
print(shortest_subarray_at_least_k([2, -1, 2], 3)) # 3 (весь массив)
print(shortest_subarray_at_least_k([1, 2, 3, 4], 6)) # 2 (3+3 нет, но 2+4 или 3+4 длина 2)
print(shortest_subarray_at_least_k([84, -37, 32, 40, 95], 167)) # 3
🎨 Создание персонажей для визуальных новелл
VNCCS — мощный инструмент для создания уникальных спрайтов персонажей в визуальных новеллах. Он упрощает процесс генерации, позволяя создавать последовательные образы с помощью нейросетей всего за несколько шагов.
🚀Основные моменты:
- Интуитивный процесс создания персонажа в 5 этапов.
- Генерация одежды и эмоций для персонажей.
- Поддержка LoRA для обучения на пользовательских данных.
- Упрощение работы с нейросетями для художников.
- Экспорт готовых спрайтов для использования в проектах.
📌 GitHub: https://github.com/AHEKOT/ComfyUI_VNCCS
#python
🖥 Проверка сетевых сервисов в Python через socket
В Python можно быстро проверить, доступен ли сетевой сервис и как быстро он отвечает, не прибегая к сложным утилитам.
Это помогает опытным разработчикам, когда нужно оперативно убедиться, что API или база данных действительно доступны и не "подвисают".
Через socket можно реализовать мини-проверку состояния сети и времени отклика.
Читать полностью…
import socket
import time
def check_service(host: str, port: int, timeout: float = 2.0):
try:
start = time.perf_counter()
with socket.create_connection((host, port), timeout=timeout):
elapsed = time.perf_counter() - start
print(f"[OK] {host}:{port} доступен, ответ за {elapsed:.3f} сек")
except Exception as e:
print(f"[FAIL] {host}:{port} недоступен — {e}")
пример: проверка доступности Google DNS и локального сервиса
check_service("8.8.8.8", 53)
check_service("localhost", 5432)
🖥 Python trick: группировка с помощью itertools.groupby
Иногда при работе с коллекциями в пайтон нужно быстро сгруппировать данные по ключу и при этом не писать громоздкий цикл с проверками. В таких случаях можно использовать модуль итэртулз и функцию группбай. Она позволяет превратить список в словарь с удобной структурой, где каждый ключ сразу содержит все связанные элементы. Это сильно экономит строки кода и делает его чище.
Читать полностью…
from itertools import groupby
from operator import itemgetter
data = [
{"category": "A", "value": 10},
{"category": "B", "value": 20},
{"category": "A", "value": 30},
{"category": "B", "value": 40},
]
сортировка обязательна перед groupby
data.sort(key=itemgetter("category"))
grouped = {
key: list(group) for key, group in groupby(data, key=itemgetter("category"))
}
print(grouped)
📚 Знакомьтесь, хендбуки от Яндекс Образования
Бесплатные интерактивные учебники для студентов и начинающих специалистов по Python, C++ и машинному обучению. Теория, которая пригодится в решении реальных задач.
Погружайтесь в дисциплину с нуля или выбирайте отдельные темы, выполняйте задания и следите за прогрессом. Хенбуки помогут закрыть пробелы в знаниях, подготовиться к экзаменам или собеседованиям.
👉Учиться по хендбукам
🔥Свежий курс со Stepik: Linux: полный апгрейд твоих скиллов
Хочешь реально понимать, что происходит под капотом твоей системы, а не просто кликать по GUI?
Без глубокого знания базы ты не инженер - ты просто пользователь.
🔹 В курсе ты:
- Освоишь bash, grep, sed, awk - инструменты, которыми живут админы.
- Разберёшь права, процессы, сеть, файловую систему и научишься чинить всё, что падает.
- Настроишь SSH, firewall, systemd, crontab, демоны и автозапуск.
- Научишься анализировать логи, следить за нагрузкой, и не паниковать при 100% CPU.
💡 Формат: пошаговое объяснение базы и разбор важных практик по работе с Linux.
🎯 После курса ты: будешь чувствовать Linux как родную среду и забудешь, что такое “permission denied”.
🚀 Сейчас действуют скидка целых - 30%, не упусти реальный шанс прокачаться.
👉 Забирай место на курсе со скидкой
Один One Day Offer вам или целых три — всем? 😉
25 октября Сбер проведёт сразу три экспресс-отбора кандидатов в две команды: GigaData и Kandinsky. Чем вам предстоит заниматься 👇
✔️ Развивать GigaData — внутреннюю платформу Сбера, которая обрабатывает петабайты данных и миллиарды запросов в сутки. One Day Offer для Python‑разработчиков.
✔️ Работать над Kandinsky — обучать большие модели с нуля, собирать и подготавливать данные, исследовать самые эффективные методы дообучения моделей.
— One Day Offer для Machine Learning Engineers с опытом в Deep Learning и компьютерном зрении (CV).
— One Day Offer для Research и Deep Learning Engineers.
Выбирайте то, что больше подходит под ваши навыки, и регистрируйтесь на One Day Offer!
🖥 Практический гайд по автоматизации процессов на Python
Перед вами подробный практический гайд по автоматизации процессов на Python для продвинутых разработчиков. Он фокусируется на промышленном уровне качества: архитектура, надёжность, наблюдаемость, упаковка и деплой. В каждом разделе — конкретные паттерны и готовые фрагменты кода.
✔️ Подробнее
📚 Работа и учёба отлично совмещаются на оплачиваемой стажировке GPB.Level Up: Кибербезопасность! Здесь гибкий график от 30 часов в неделю и удобные форматы: очно или гибридно в зависимости от направления.
GPB.Level Up: Кибербезопасность — стажировка в области информационной безопасности в Газпромбанке для старшекурсников, выпускников и начинающих специалистов. Вот и другие преимущества:
— зарплата 80 000 рублей со старта (gross при работе 40 часов в неделю)
— поддержка от опытных наставников и экспертов информационной безопасности
— доступ к 800+ курсам для развития soft и hard skills, Skillbox, Lerna и другим платформам
— перспективы для карьеры: более 90% участников GPB.Level Up: Кибербезопасность прошлого сезона остались работать в банке
Время показать свои таланты, жми на кнопку!
https://vk.cc/cQ15u2?erid=2W5zFJmqXqA
🚀 VibeThinker: Новый стандарт в моделях с малым количеством параметров
Это 1.5B модель, которая демонстрирует выдающиеся способности в решении математических задач, соперничая с гораздо более крупными моделями. Используя инновационную методику постобучения, она достигает результатов, сопоставимых с открытыми моделями, такими как GPT OSS-20B Medium, при значительно меньших затратах.
🚀Основные моменты:
- Эффективность: 1.5B параметров, производительность на уровне 1000B+ моделей.
- Инновационная методология: "Spectrum-to-Signal Principle" для улучшения разнообразия выходных данных.
- Выдающиеся результаты: Превосходит модели, в 10-600 раз большие.
- Экономичность: Разработка модели стоит всего $7,800 против сотен тысяч для конкурентов.
📌 GitHub: https://github.com/WeiboAI/VibeThinker
#python
🚀 Пул интерпретаторов в Python 3.14
Что появилось:
- В Python 3.14 добавили *пул интерпретаторов* — теперь в одном процессе можно запускать несколько независимых интерпретаторов.
- Это шаг к более безопасным, масштабируемым и изолированным системам на Python.
Зачем это нужно:
- Снижает зависимость от тяжёлых процессов — можно управлять несколькими интерпретаторами внутри одного процесса.
- Повышает отказоустойчивость: сбой одного интерпретатора не падает весь процесс.
- Открывает возможность частично обходить ограничения GIL, используя параллельность на уровне нескольких интерпретаторов.
Главные плюсы:
- Лучшая изоляция выполнения.
- Больше возможностей для масштабирования внутри одного процесса.
- Архитектурно Python становится ближе к моделям с lightweight-виртуальными машинами.
Главные минусы:
- Каждый интерпретатор требует своё адресное пространство → больший расход памяти.
- Увеличивается время инициализации в сравнении с потоками.
- Не во всех сценариях заменяет multiprocessing или threading.
Пул интерпретаторов - фундаментальное изменение, которое позволит по-новому строить высоконагруженные и безопасные Python-приложения, но потребует переосмысления архитектуры и учёта повышенного расхода ресурсов.
https://www.youtube.com/watch?v=Jd0MOM1dlfI
Эффективное тестирование Python-кода
Продвинутый совет: тестируй Python-код эффективно, используя связку pytest плюс фикстуры плюс правильное тестирование через hypothesis.
Сначала проверяй основные сценарии, потом добавляй окружение через фикстуры (файлы, БД, mock API), а затем включай генерацию случайных входов — так ты поймаешь скрытые баги, не переписывая километры тестов.
Подписывайся, больше фишек каждый день !
Читать полностью…
from hypothesis import given, strategies as st
Базовый юнит-тест
def test_add():
assert add(2, 3) == 5
Фикстура окружения (временный файл)
@pytest.fixture
def temp_file(tmp_path):
p = tmp_path / "data.txt"
p.write_text("42")
return p
def test_read_data(temp_file):
assert read_data(temp_file) == 42
Property-based тест
@given(st.integers(), st.integers())
def test_add_random(a, b):
assert add(a, b) == a + b
Запуск только упавших тестов (быстрый цикл разработки):
# pytest --lf
💡 12 команд Git, которые должен знать каждый:
git init - создаёт новый Git-репозиторий в текущей папке (начинает контроль версий).
git add - запоминает изменения, подготавливая их для сохранения.
git commit - сохраняет подготовленные изменения с твоим комментарием (например, «починил баг» или «добавил кнопку»).
git push - отправляет сделанные коммиты в облачный (удалённый) репозиторий, чтобы их видели другие.
git pull - забирает последние изменения из облака и добавляет их в твою рабочую версию (автоматически объединяет).
git remote - помогает управлять ссылками на удалённые репозитории (добавлять новые или смотреть, какие уже подключены).
git branch - показывает существующие ветки, создаёт новые и позволяет переключаться между ними (чтобы работать параллельно с разными версиями кода).
git fetch - скачивает последние изменения из облака, но не объединяет их с текущим кодом (можно посмотреть заранее, что изменилось).
git checkout - переключает твою рабочую папку на другую ветку или на конкретный коммит (например, для тестирования).
git merge - объединяет изменения из одной ветки с текущей веткой (сливает их воедино).
git status - показывает, какие файлы были изменены, какие готовы к коммиту, а какие ещё нет (текущее состояние проекта).
git reset - позволяет вернуться назад по истории кода, отменив изменения до конкретного коммита (например, если что-то пошло не так).
🧠 DeepSeek-OCR: Оптимизация оптического распознавания текста
DeepSeek-OCR — это модель для исследования роли визуальных энкодеров в контексте LLM. Она предлагает новые подходы к сжатию визуального текста и поддерживает различные режимы разрешения. Идеально подходит для задач OCR и обработки документов.
🚀Основные моменты:
- Модель для оптического распознавания текста.
- Поддержка нескольких режимов разрешения.
- Интеграция с Hugging Face для удобного использования.
- Исследование сжатия визуального текста.
📌 GitHub: https://github.com/deepseek-ai/DeepSeek-OCR
#python
Не пропусти МТС True Tech Champ — масштабный фестиваль 21 ноября для тех, кто живет технологиями 🔥
Тебя ждут:
▫️ Конференция с международными спикерами. Эксперты расскажут о трендах в ИИ и инновациях в индустрии.
▫️ ИТ-качалка. Наращивай экспертизу на воркшопах.
▫️ Шоу-финал ИТ-чемпионата. Более 250 талантов со всей России сразятся в лайв-кодинге и программировании роботов на скоростное прохождение лабиринтов со спецэффектами. Выбирай и болей за фаворитов.
▫️ Айтивности. Тебя ждут бои роботов, кодерские челленджи, пайка плат и не только. Заработай True Coins и обменяй их на стильный мерч.
▫️ HR-Hub. Команда МТС расскажет о возможностях для развития в компании и поможет перезагрузить карьерный трек.
▫️ Афтепати со звездными хэдлайнерами. Зажги под популярные хиты.
Когда: 21 ноября, МТС Live Холл в Москве и онлайн.
Регистрируйся на сайте. Участие бесплатно, количество мест ограничено.
⁉️Машинное обучение кажется чем-то сложным и недосягаемым? Всё проще, чем вы думаете!
Первый шаг — разобраться, как устроен ML-процесс и научиться работать в Jupyter Notebook — инструменте, с которого начинают все специалисты в Data Science.
На открытом уроке вы шаг за шагом поймёте, как строится путь от данных до модели. Научитесь запускать эксперименты в Jupyter Notebook и Google Colab, работать с виртуальными окружениями и не бояться “сломать” систему. Всё — в формате простых и наглядных примеров.
После урока вы сможете уверенно начать свой первый ML-проект и поймёте, какие инструменты нужны, чтобы перейти от теории к практике.
➡️ 13 ноября в 20:00 МСК. Открытый вебинар проходит в преддверии старта курса «Machine Learning. Basic». Регистрируйтесь и сделайте первый шаг в машинное обучение без страха и путаницы:т https://otus.pw/cARZ/?erid=2W5zFGrhViQ
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🤖 PharosTestnet Bot: Автоматизация для криптоактивов
PharosTestnet-bot — это Python-бот для автоматизации различных операций с криптовалютами на тестовой сети. Он поддерживает множество функций, включая автоматический вход, управление ликвидностью и работу с прокси. Идеален для трейдеров, желающих оптимизировать свои действия.
🚀Основные моменты:
- Автоматический ежедневный вход
- Поддержка всех типов прокси
- Многопоточность для повышения производительности
- Автообмен и управление ликвидностью
- Получение статистики по аккаунтам
📌 GitHub: https://github.com/haspread/PharosTestnet-bot
#python
🔥Продвинутый совет по ускорению Python-кода
Один из скрытых тормозов Python — частые вызовы маленьких функций внутри циклов. Каждый вызов вносит оверхед интерпретатора. Если функция простая, её можно «инлайнить» (встроить прямо в цикл), или использовать NumPy vectorization и Numba JIT, чтобы убрать лишние вызовы.
Например, вместо того чтобы вызывать функцию миллионы раз, можно скомпилировать её через @njit из Numba — и Python-код превратится в машинный, работая в десятки раз быстрее. Это особенно эффективно для численных расчётов, работы с массивами и больших циклов.
Хочешь больше таких фишек? Подписывайся на нас и каждый день получай свежие и нестандартные советы, которые реально прокачают твои навыки разработчика!
Читать полностью…
import numpy as np
from numba import njit
# Обычная Python-функция — будет работать медленно на больших данных
def transform(x):
return x * x + x % 7
# JIT-компиляция убирает интерпретационный оверхед
@njit
def fast_transform(arr):
res = np.empty_like(arr)
for i in range(arr.size):
res[i] = arr[i] * arr[i] + arr[i] % 7
return res
data = np.arange(10_000_000, dtype=np.int64)
# Медленный вариант: Python-функция внутри list comprehension
res1 = [transform(x) for x in data]
# Быстрый вариант: Numba скомпилировала цикл в машинный код
res2 = fast_transform(data)
print(res1[:5], res2[:5])
🌟 Рисуем шахматную доску с помощью Matplot!
@python_job_interview
🐍 Хитрая задача с собеседования по Python
> Что выведет этот код и почему?
def extend_list(val, lst=[]):
lst.append(val)
return lst
list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list('a')
print(list1, list2, list3)
[10, 'a'] [123] [10, 'a']
def extend_list(val, lst=None):
if lst is None:
lst = []
lst.append(val)
return lst
🧩 sync-with-uv
Небольшой, но полезный пакет, который автоматизирует синхронизацию версий между uv.lock и .pre-commit-config.yaml.
Зачем это нужно:
- Часто версии инструментов (black, ruff, mypy и др.) расходятся: одно указано в lock-файле, другое — в pre-commit.
- В итоге могут воспроизводиться разные окружения и непредсказуемые ошибки.
Что делает sync-with-uv:
- Автоматически подтягивает версии из uv.lock в .pre-commit-config.yaml.
- Интегрируется как pre-commit hook.
- Поддерживает частичную синхронизацию — не затрагивает инструменты, для которых версии не заданы.
Итог: один источник правды для зависимостей, меньше ручной рутины и более стабильные пайплайны.
🔗 Репозиторий: https://github.com/tsvikas/sync-with-uv
🧠 Создайте своего ChatGPT с nanochat
nanochat — это минималистичный фреймворк для создания LLM, аналогичного ChatGPT, с возможностью запуска на одном узле. Он включает все этапы от токенизации до веб-сервиса с простым интерфейсом, позволяя взаимодействовать с вашим собственным языковым моделью.
🚀Основные моменты:
- Полный стек для создания LLM в одном коде.
- Легкий в использовании и настройке.
- Поддержка различных моделей с разными затратами.
- Возможность оценки и анализа производительности.
📌 GitHub: https://github.com/karpathy/nanochat
#python
🖥 Полный гайд: защита от SQL-инъекций для разработчиков
SQL-инъекции остаются одной из самых частых и опасных уязвимостей в веб-приложениях. Ошибка в одном запросе — и злоумышленник получает доступ к базе данных, паролям и пользовательским данным.
В этом материале — полный практический разбор:
как именно происходят SQL-инъекции, какие ошибки разработчиков к ним приводят, как их распознать в коде и главное — как защититься.
Разберём реальные примеры на Python, PHP и Go, посмотрим, как атакующий «взламывает» запрос, и научимся писать безопасный код с параметризованными запросами и ORM.
Это не теория, а руководство, которое поможет понять уязвимость изнутри и навсегда закрыть её в своих проектах.
👉 Читать гайд
🖥 Что нового в Python 3.14 и почему стоит перейти
Python 3.14 вышел 7 октября 2025 года. Это новый стабильный релиз, который содержит как изменения в самом языке, так и улучшения в реализации, стандартной библиотеке, отладке и взаимодействии с многопоточностью.
Ниже - обзор ключевых нововведений, их смысла, применимости и возможных подводных камней.
🟠Основные нововведения (Release highlights)
- Отложенная (ленивая) оценка аннотаций - теперь аннотации не вычисляются сразу, что уменьшает накладные расходы.
- Поддержка нескольких интерпретаторов в рамках одного процесса через новый модуль.
- Новый синтаксис шаблонных строк (t-strings), который даёт больше контроля над статической и интерполированной частью.
- Более информативные сообщения об ошибках (например, подсказки для опечаток в ключевых словах).
- Поддержка формата сжатия Zstandard в стандартной библиотеке.
- Улучшенные возможности для отладки и профилирования, в том числе подключение к живому процессу без остановки.
- Улучшения в asyncio — команды для визуализации и диагностики задач, стеков ожидания и зависимостей.
- Уменьшение пауз сборщика мусора (gc) через инкрементальный сбор.
- Подсветка синтаксиса и автодополнение модулей в интерактивном режиме (REPL) по умолчанию.
🟠 Подробности и примеры
Ленивые аннотации - deferred evaluation of annotations
Раньше аннотации (для типов, документации, подсказок) могли вызывать вычисления прямо при определении функции или класса. Теперь они хранятся в виде «ленивых» структур и вычисляются по надобности. Это снижает накладные расходы на загрузку кода, особенно если аннотации сложные или содержат много forward-ссылок.
Есть модуль annotationlib, который позволяет исследовать аннотации программно и выбирать формат их получения — строки, объекты или отложенные ссылки.
Когда это особенно помогает:
- большие фреймворки, генерация кода, ORM, библиотеки с множеством аннотаций;
- ускорение импорта при старте приложений;
- уменьшение накладных расходов при работе с типами.
Что проверить при миграции:
- код, использующий __annotations__ напрямую, может требовать адаптации;
- убедитесь, что сторонние библиотеки, работающие с аннотациями, поддерживают новый формат.
Несколько интерпретаторов (subinterpreters)
Теперь в Python можно запускать несколько независимых интерпретаторов внутри одного процесса (модуль `concurrent.interpreters`).
Преимущества:
- изоляция между интерпретаторами (отдельная память, отдельный GIL);
- параллелизм на многоядерных системах;
- меньше накладных расходов, чем при использовании multiprocessing.
Ограничения:
- не все C-расширения поддерживают мультиинтерпретацию;
- коммуникация между интерпретаторами требует явных каналов (очереди, сообщения).
Это даёт реальную возможность распараллеливания CPU-задач без запуска отдельных процессов.
Template string literals (t-strings)
Новое синтаксическое средство — префикс t перед строкой, аналогично f'...'.
Результат — объект Template, который хранит текст и вставки по отдельности.
variety = 'Stilton'
template = t'Try some {variety} cheese!'