Python Community
12.6K subscribers
1.3K photos
57 videos
15 files
792 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
🖥 Python: склейка TCP-пакетов

Когда отправляешь ты в сокет много маленьких кусочков - уходит куча мелких TCP-пакетов это работает медленнее и с задержками.

Решение: склеивай данные и отправляй одним блоком.

На Linux можно сказать ядру «подожди, я ещё допишу» команда MSG MORE.

Итог: меньше пакетов, быстрее отклик.


python


import socket

def send_coalesced(sock, parts):
for chunk in parts[:-1]:
sock.sendall(chunk, socket.MSG_MORE)
sock.sendall(parts[-1]) финальный flush

#Вот короткий пример как делать «плохо» и «хорошо»:

import socket

sock = socket.create_connection(("localhost", 9090))

# Плохо: много маленьких пакетов
sock.sendall(b"Hello, ")
sock.sendall(b"world")
sock.sendall(b"!\n")

# Хорошо: склеили всё и отправили одним пакетом

msg = b"".join([b"Hello, ", b"world", b"!\n"])
sock.sendall(msg)

@Python_Community_ru
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Малоизвестный совет по Python: используй pyparsing вместо громоздких и тяжёлых regex.

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

Главная фишка: если в одном месте разбор сломался, pyparsing пробует другие варианты, а не падает. Это делает его удобным инструментом для разбора конфигов, мини-языков и любых сложных форматов текста, где regex становится болью.


from pyparsing import Word, alphas, nums, Group, OneOrMore

# Определим правило: слово + число
identifier = Word(alphas) + Word(nums)

# Парсер будет читать такие пары подряд
parser = OneOrMore(Group(identifier))

result = parser.parseString("user123 order456 item789")
print(result.asList())

# output:

@Python_Community_ru
🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Python трюк: сортировка namedtuple

Вместо словарей можно использовать namedtuple для хранения структурированных данных, а потом легко сортировать по любому полю.


from collections import namedtuple

Name = namedtuple("Name", ["first", "last"])
names = [
Name("Mike", "Driscoll"),
Name("Zahna", "Brown"),
Name("James", "Williams")
]

# Сортировка по имени
print(sorted(names, key=lambda n: n.first))

# Сортировка по фамилии
print(sorted(names, key=lambda n: n.last))

@Python_Community_ru
🚀 Django 6.0 — уже в пути!

Главное в Django 6.0
- Content Security Policy (CSP)
Новый ContentSecurityPolicyMiddleware, теги csp() и настройки SECURE_CSP / SECURE_CSP_REPORT_ONLY.
- Фоновые задачи
Декоратор @task и метод enqueue() для простого запуска background jobs.
- Template Partials
Теги {% partialdef %} и {% partial %} для переиспользуемых фрагментов в шаблонах.
- Обновлённое Email API
Современный EmailMessage вместо устаревших MIME-классов.
- Другие улучшения
• В админке — иконки Font Awesome
• В auth увеличены итерации PBKDF2
• Улучшения в Postgres, GeoDjango, миграциях и др.

🔄 Изменения без обратной совместимости
- Минимальная версия MariaDB — 10.6
- Поддержка Python ≥ 3.12
- DEFAULT_AUTO_FIELD теперь всегда BigAutoField
- Удалены устаревшие API и внутренние методы

👉 Подробнее: https://docs.djangoproject.com/en/dev/releases/6.0/

#django #python

@Python_Community_ru
🔥3
🖥 Leviathan (https://github.com/kython28/leviathan) — это сверхбыстрая библиотека для Python, реализующая цикл событий (event loop) для asyncio на базе языка Zig!

🌟 Она обеспечивает высокую производительность, полную совместимость с asyncio и простоту интеграции в проекты. Leviathan нацелен на минимизацию задержек и оптимизацию производительности по сравнению со стандартными циклами событий Python.

🔐 Лицензия: MIT

🖥 Github (https://github.com/kython28/leviathan)

@Python_Community_ru
🎨 Улучшение изображений с помощью SRPO

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

🚀Основные моменты:
- Эффективное восстановление изображений с высокой степенью шума.
- Ускоренная тренировка за счет оптимизации с аналитическими градиентами.
- Отсутствие проблем с "взломом" вознаграждений.
- Динамическое управление текстовыми условиями для настройки предпочтений.

📌 GitHub: https://github.com/Tencent-Hunyuan/SRPO

@Python_Community_ru