Telegram Web Link
🚦 premier — удобный инструмент для ограничения частоты вызовов в Python

Что это такое:
premier — это библиотека для контроля скорости вызовов функций в Python. Она помогает ограничить нагрузку на API, базу данных или любой другой ресурс, чтобы не получить отказ или блокировку.

📌 Возможности:
• Поддержка популярных алгоритмов: token bucket, fixed window, leaky bucket
• Работает как с обычными, так и с асинхронными функциями
• Поддерживает Redis и другие хранилища для распределённого ограничения
• Гибкая настройка: лимиты, ключи, длительность окна, своя логика
• Простое применение через декораторы

🧪 Пример:


from premier import throttler, ThrottleAlgo, RedisHandler

@throttler.fixed_window(quota=3, duration=5)
def request(url: str):
# максимум 3 вызова каждые 5 секунд
...

@throttler.token_bucket(quota=5, duration=60)
async def async_request(...):
# асинхронный токен-бакет
...


🔧 Где применить:
• Ограничение частоты запросов к внешним API
• Защита от перегрузки микросервисов
• Контроль доступа к ресурсам внутри приложения
• Настройка rate-limit в фоновом обработчике или очереди

Почему стоит попробовать:
premier — лёгкая, понятная и гибкая библиотека. Она упрощает внедрение rate limiting, особенно если нужно масштабироваться или работать в асинхронной среде.

Если строишь что-то распределённое или просто не хочешь случайно “положить” сервис из-за частых вызовов — premier отлично подойдёт.

📌 Github (https://github.com/raceychan/premier)



@Python_Community_ru
🎯 Хочешь следить за загрузкой своей GPU прямо из Python?

Вот простой скрипт, который показывает текущую загрузку видеокарты NVIDIA (через `nvidia-smi`). Подходит для мониторинга в ML-задачах, инференсе и просто для интереса.

📦 Зависимости: установленный nvidia-smi и Python 3.6+

🧠 Код:


import subprocess

def get_gpu_utilization():
try:
result = subprocess.check_output(
['nvidia-smi', '--query-gpu=utilization.gpu,memory.used,memory.total',
'--format=csv,nounits,noheader'],
encoding='utf-8'
)
lines = result.strip().split('\n')
for idx, line in enumerate(lines):
gpu_util, mem_used, mem_total = map(str.strip, line.split(','))
print(f"🖥 GPU {idx}: {gpu_util}% load | {mem_used} MiB / {mem_total} MiB")
except FileNotFoundError:
print(" nvidia-smi not found. Make sure NVIDIA drivers are installed.")
except Exception as e:
print(f"⚠️ Error: {e}")

get_gpu_utilization()


📊 Вывод будет примерно такой:

GPU 0: 23% load | 412 MiB / 8192 MiB

🔥 Советы:
• Можно запускать в цикле для live-мониторинга
• Легко интегрировать в Telegram-бота или Slack-уведомления
• Работает на всех машинах с установленным NVIDIA драйвером и nvidia-smi



@Python_Community_ru
⚡️ PyOpenCL — ускоряем Python вычисления на GPU. Этот проект даёт доступ к технологии OpenCL прямо из Python, позволяя задействовать не только видеокарты, но и любые параллельные вычислительные устройства. Он сочетает низкоуровневый контроль с автоматической обработкой ошибок и привязкой жизненного цикла объектов.

Инструмент имеет обширную документацию с примерами: от простого поэлементного умножения массивов до сложных алгоритмов с использованием локальной памяти GPU. Проект работает с реализациями OpenCL от Apple, AMD и Nvidia, а установка через Conda занимает буквально пару команд.

🤖 GitHub (https://github.com/inducer/pyopencl)



@Python_Community_ru
🚀 Станьте экспертом в реверс-инжиниринге и откройте для себя новые горизонты в IT.

Актуальное обучение от OTUS — это ваш старт в мир реверс-инжиниринга на практике!

👨‍💻 На курсе вы освоите все ключевые аспекты реверс-инжиниринга — от базовых техник и инструментов до сложных методик анализа кода, уязвимостей и патчей. Мы подготовим вас для работы с реальными кейсами, исследованием программного обеспечения и исследованиями в области безопасности.

❗️ Запись на онлайн-курсе "Reverse-Engineering" от OTUS закрывается! Оставьте заявку и получите скидку на обучение по промокоду REVERSE6 : https://clck.ru/3Mtsbb

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🧩 Задача для разминки

Что выведет этот код? Попробуй догадаться без запуска.


class Sneaky:
def __eq__(self, other):
print("Comparing!")
return True

a = Sneaky()
b = [a]

print(a in b)
print(a == b[0])
print(b.count(a))


🤔 Подумай: сколько раз вызовется eq?

🎯 Разбор:

print(a in b)
🔍 Проверка a in b вызывает b.__contains__(a), который по умолчанию использует ==.
👉 Вызовется eq, будет True.

print(a == b[0])
🔍 Прямое сравнение — снова eq.

print(b.count(a))
🔍 list.count сравнивает каждый элемент с ==. В нашем списке один элемент — a.
👉 Опять вызывается eq.

💥 Вывод будет:


Comparing!
True
Comparing!
True
Comparing!
1


📌 Вывод: __eq__ сработал 3 раза, и каждый раз напечатал "Comparing!".

🧠 Уловка: Python-списки используют ==, даже если это один и тот же объект! Да, a == a всё равно вызовет __eq__, если он определён.

⚠️ Фишка для интервью:
Можно подменить поведение ==, но is (сравнение идентичности) всегда быстрее и не вызывает магии.



@Python_Community_ru
2025/07/02 23:47:06
Back to Top
HTML Embed Code: