Python Portal
56.6K subscribers
2.39K photos
367 videos
51 files
957 links
Всё самое интересное из мира Python

Связь: @devmangx

РКН: https://clck.ru/3GMMF6
Download Telegram
Разработчик поделился приятной находкой: сделали утилиту на Python с открытым кодом для офлайн-транскрибации аудио.

Назвали Buzz. Поддерживает аудио, видео, YouTube-линки и даже микрофон. На выход можно получить текст в txt, srt или vtt. Всё работает локально, без отправки куда-то на сервера.

Исходники лежат тут 🤪

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍139🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
AI → JSON → UI: представили json-render

UI, который генерит ИИ. Выход детерминированный.

1. Определяешь каталог компонентов

2. ИИ стримит JSON

3. Рендеришь интерактивный UI

Пользователь может по промпту собирать дашборды, виджеты и целые мини-приложения, но в пределах тех компонентов и экшенов, которые ты заранее разрешил.

И это вышло в опенсорс.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍126🔥3
В CPython ускорили reference counting

В CPython основа управления памятью это reference counting: у каждого объекта есть счётчик ссылок, и при каждом “взял/отпустил” он инкрементится/декрементится. В цикле, который крутится очень много раз, это превращается в ощутимый оверхед и лишние записи в память (да, даже чтение переменной = запись из-за refcount).

С Python 3.14 добавили новую байткод-инструкцию: LOAD_FAST_BORROW.

Что меняется:

- раньше LOAD_FAST грузил локалку и поднимал refcount
- теперь LOAD_FAST_BORROW грузит локалку без инкремента
- есть ещё “склеенные” опкоды типа LOAD_FAST_BORROW_LOAD_FAST_BORROW (две загрузки за один opcode)

Зачем это нужно:

- меньше дергаем refcount в hot-path
- меньше мусора в CPU cache
- быстрее на циклах, где ты постоянно читаешь одни и те же локальные переменные

Но оптимизация включается не всегда. CPython применяет её только когда может доказать безопасность через статический анализ времени жизни (по CFG):

- значение используется “локально” и быстро потребляется
- не утекает в heap/генераторы/кадры
- источник не перезаписывается так, чтобы сломать “borrow”

Это похоже на упрощённые Rust lifetimes/borrowing, только на уровне байткода.

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍199
Forwarded from Айти мемы
Убийца Windows и Linux на подходе
😁119🔥12🤣62😢1
Что если бы ты мог увидеть всё дерево зависимостей одной командой?

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

uv tree делает это автоматически: выводит полный граф зависимостей, чтобы ты мог отследить любой пакет и понять, откуда он подтянулся.

Ключевые возможности:

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

Установка uv: pip install uv

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
17🔥2
Коллекция книг по машинному обучению и искусственному интеллекту в формате PDF: забираем

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Когда джун всё таки переписал проект на своём языке

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
1😁11310
Лучшие репозитории GitHub для изучения ИИ с нуля в 2026 году:

1. Андрей Карпаты
https://github.com/karpathy/nn-zero-to-hero

2. Hugging Face Transformers
https://github.com/huggingface/transformers

3. FastAI/fastb
https://github.com/fastai/fastbook

4. Made-With-ML
https://github.com/GokuMohandas/Made-With-ML

5. ML System Design
https://github.com/chiphuyen/machine-learning-systems-design

6. Awesome Generative AI guide(
https://github.com/aishwaryanr/awesome-generative-ai-guide

7. Dive into Deep Learning
https://github.com/d2l-ai/d2l-en

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
10👍3
Топ-5 алгоритмов rate limiting, которые стоит знать:

➡️Token Bucket
Ведро пополняется токенами с фиксированной скоростью. Каждый запрос съедает 1 токен.
Если токенов нет (ведро пустое) -> запрос троттлится.
Отлично, когда надо разрешить короткие всплески, но держать среднюю скорость запросов.

➡️Fixed Window Counter
Делит время на фиксированные окна (например, по минуте).
Считает запросы в текущем окне. Если счётчик превысил лимит -> блок.
Просто внедрить, но есть проблема со всплесками на границах окон.

➡️Leaky Bucket
Представь очередь, которая “протекает” с постоянной скоростью.
Если новые запросы переполняют очередь -> они дропаются.
На выходе получается ровный, предсказуемый поток запросов.

➡️Sliding Window Log
Хранит timestamp для каждого запроса.
На каждый новый запрос выкидывает старые timestamp’ы за пределами окна и считает оставшиеся.
Очень точно, но дороговато по памяти на больших объёмах.

➡️Sliding Window Counter
Гибрид Fixed Window и Log.
Делит окно на мелкие бакеты и считает скорость через взвешенную сумму.
Хороший баланс точности и расхода памяти.

Какой из них вы чаще всего используете в проде?

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85
This media is not supported in your browser
VIEW IN TELEGRAM
Обесценивание профессии "инженер":

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣67👍6🔥21
Расширенный алгоритм Евклида.

1) Что такое расширенный алгоритм Евклида


Для двух целых чисел a и b и их НОД, то есть gcd(a, b), выполняется линейное уравнение с двумя переменными:

a·x + b·y = gcd(a, b) (1)

Расширенный алгоритм Евклида это способ найти одну пару целочисленных решений (x, y), которая удовлетворяет (1).

2) Алгоритм расширенного алгоритма Евклида

Перед тем как перейти к сути, вспомним обычный алгоритм Евклида.

Для двух целых a и b следующими шагами получаем:

gcd(a, b) = rₙ (2)

Сама цепочка делений с остатком:

a = b·q₀ + r₀
b = r₀·q₁ + r₁
r₀ = r₁·q₂ + r₂
...
rₙ₋₂ = rₙ₋₁·qₙ + rₙ
rₙ₋₁ = rₙ·qₙ₊₁

Теперь посмотрим на первую строку:

a = b·q₀ + r₀
r₀ = a − b·q₀

То есть r₀ можно выразить как линейную комбинацию a и b.

Подставим это во вторую строку:

b = r₀·q₁ + r₁
b = (a − b·q₀)·q₁ + r₁
b = a·q₁ − b·q₀·q₁ + r₁
r₁ = −a·q₁ + b·(q₀·q₁ + 1)

Получается, r₁ тоже выражается через a и b.

Если повторять эту операцию, то каждый rᵢ (0 ≤ i ≤ n) можно представить как сумму кратных a и b.
Значит, в конце:

rₙ = k·a + l·b

А из (2) получаем:

k·a + b·l = gcd(a, b) (3)

Это та же форма, что и (1). Сравнивая (1) и (3), получаем:

(x, y) = (k, l)

и эти k и l будут одной из пар целочисленных решений.

3) Реализация расширенного алгоритма Евклида

Опираясь на вышеописанное, реализуем расширенный алгоритм Евклида:

# extended_eucledean.py
def extended_eucledean(a, b):
if b == 0:
return (1, 0)
else:
xd, yd = extended_euclid(b, a % b)
return (yd, xd - a // b * yd)


Очень просто, правда?

Ну всё. Пока. 🛌

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13🤯96👍2🤣1
Теперь можно парсить почти любой документ одной моделью на 1.7B параметров.

Она называется dots-ocr. Одна система, которая умеет работать с текстом, таблицами, формулами, изображениями и PDF на 100+ языках.

Без отдельного OCR-пайплайна. Без моделей под конкретные задачи.

100% исходный код 👏

👉 @PythonPortal
Please open Telegram to view this post
VIEW IN TELEGRAM
19👍5