Python/ django
по всем вопросам @haarrp @itchannels_telegram - 🔥 все ит каналы @ai_machinelearning_big_data -ML @ArtificialIntelligencedl -AI @datascienceiot - 📚 @pythonlbooks РКН: clck.ru/3FmxmM
Show more📈 Analytical overview of Telegram channel Python/ django
Channel Python/ django (@pythonl) in the Russian language segment is an active participant. Currently, the community unites 60 075 subscribers, ranking 2 192 in the Technologies & Applications category and 10 214 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 60 075 subscribers.
According to the latest data from 05 June, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by -562 over the last 30 days and by -8 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 6.76%. Within the first 24 hours after publication, content typically collects 3.58% reactions from the total number of subscribers.
- Post reach: On average, each post receives 4 065 views. Within the first day, a publication typically gains 2 153 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 15.
- Thematic interests: Content is focused on key topics such as github, claude, контекст, архитектура, api.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“по всем вопросам @haarrp
@itchannels_telegram - 🔥 все ит каналы
@ai_machinelearning_big_data -ML
@ArtificialIntelligencedl -AI
@datascienceiot - 📚
@pythonlbooks
РКН: clck.ru/3Fmxm...”
Thanks to the high frequency of updates (latest data received on 07 June, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
@thread_safe_cached, который:
- Кэширует результат вызова функции по её аргументам (аналог functools.lru_cache, но свой).
- Если несколько потоков одновременно вызывают функцию с одинаковыми аргументами:
- Только один поток реально выполняет функцию,
- Остальные ждут, пока результат будет вычислен, и получают готовый результат.
- Кэш никогда не удаляется (неограниченный размер).
Ограничения:
- Решение должно работать для произвольных функций и аргументов (hashable).
- Нельзя использовать готовый functools.lru_cache или другие библиотеки кэширования.
- Нужно обеспечить корректную работу в многопоточной среде без гонок данных.
---
▪️ Подсказки:
- Для кэширования подойдёт dict с ключами по аргументам (`*args`, `**kwargs`).
- Для защиты доступа к кэшу понадобится threading.Lock.
- Для ожидания завершения вычисления другими потоками можно использовать threading.Event.
- Продумайте carefully: как отличить "результат уже посчитан" от "результат в процессе вычисления".
---
▪️ Что оценивается:
- Умение работать с многопоточностью в Python.
- Правильная организация кэширования.
- Чистота и лаконичность кода.
- Умение обрабатывать тонкие случаи, например: одновременные вызовы.
---
▪️ Разбор возможного решения:
Основная идея:
- Создать кэш cache: Dict[Key, Result].
- Одновременно создать словарь "ожиданий" in_progress: Dict[Key, threading.Event].
- Если кто-то начал считать значение:
- Остальные ждут Event, пока оно не будет установлено.
Пример реализации:
import threading
import functools
def thread_safe_cached(func):
cache = {}
in_progress = {}
lock = threading.Lock()
@functools.wraps(func)
def wrapper(*args, **kwargs):
key = (args, frozenset(kwargs.items()))
with lock:
if key in cache:
return cache[key]
if key not in in_progress:
in_progress[key] = threading.Event()
in_progress[key].clear()
creator = True
else:
creator = False
if creator:
try:
result = func(*args, **kwargs)
with lock:
cache[key] = result
finally:
in_progress[key].set()
with lock:
del in_progress[key]
return result
else:
in_progress[key].wait()
with lock:
return cache[key]
return wrapper
---
▪️ Пояснения к коду:
- При первом вызове для новых аргументов поток создаёт Event и начинает считать результат.
- Остальные потоки видят Event и вызывают wait(), пока первый поток не установит set().
- Как только результат посчитан, Event сигнализирует всем ждущим потокам, что данные готовы.
- Доступ к cache и in_progress защищён через lock для избежания гонок.
---
▪️ Возможные подводные камни:
- ❗ Если не удалять Event из in_progress, кэш постепенно раздуется мусором.
- ❗ Если ошибка случится внутри func, необходимо всё равно освободить Event, иначе потоки будут вечно ждать.
- ❗ Нельзя держать lock во время выполнения тяжёлой функции func, иначе все потоки будут блокироваться.
---
▪️ Вопросы на собеседовании по этой задаче:
- Как изменить реализацию, чтобы кэш имел ограничение по размеру (например, максимум 1000 элементов)?
- Как адаптировать декоратор под асинхронные функции (`async def`)?
- Что будет, если func иногда бросает исключения? Как кэшировать ошибки или не кэшировать их?
- Как изменить реализацию так, чтобы кэш удалял устаревшие данные через TTL (Time-To-Live)?
---
@pythonlpip install pdf-craft и pip install onnxruntime==1.21.0 (или onnxruntime-gpu==1.21.0 для CUDA).
Для EPUB-конвейера нужен доступ к LLM-сервису (например, DeepSeek).
🟡 Github
@pythonl
name = "Alice"
greeting = t"Hello, {name}!" # t-строка
Вместо немедленной подстановки, как в f"...", t"..." создает шаблон с выражениями как параметрами.
🔐 Зачем это нужно?
✅ Безопасность при генерации SQL, HTML, JSON
✅ Улучшение инструментов и проверки типов (через static analysis)
✅ Контроль над контекстом исполнения (больше нельзя просто вставить переменную как есть — нужно передать её явно)
📦 Использование:
t-строки — это первый шаг к "template string literals" как в TypeScript.
Можно использовать с функциями:
def html(template: T[str]) -> SafeHTML:
...
html(t"<div>{user_input}</div>")
💡 Почему это важно?
Старый код:
f"SELECT * FROM users WHERE name = '{user_name}'"
может привести к SQL-инъекциям и XSS.
t-строки — безопасная альтернатива с встроенной защитой.
🛡 Пример: безопасный HTML
template = t"<p>{user_input}</p>"
html_output = html(template)
# <p><script>alert('bad')</script></p>
Функция html() может вернуть не просто строку, а полноценный HTMLElement.
Больше никакой "грязи" — всё чисто и типобезопасно.
🔍 Работа с шаблоном
t-строки позволяют получить доступ к содержимому:
template = t"Hello {name}!"
template.strings # ("Hello ", "!")
template.values # (name,)
template.interpolations[0].format_spec # ">8"
Можно и вручную собрать шаблон:
Template("Hello ", Interpolation(value="World", expression="name"), "!")
🚀 Вывод:
t"..." — шаг к безопасным шаблонам и типизации строк в Python.
Готовься к будущему Python — безопасному по умолчанию.
📌 Подробнее здесь
@pythonlDJANGO;
→ Есть билет для студентов и преподавателей вузов — в два раза дешевле персонального;
→ Можно попросить руководство приобрести вам корпоративный билет.
Бонус: в соседних залах пройдет ML-конференция IML. Участники PiterPy смогут послушать доклады IML бесплатно.
За подробностями и билетамиpip install pex
Собираем .pex-файл:
pex requests -o fetch.pex --script=requests
После этого fetch.pex — готовый исполняемый файл, который при запуске сразу импортирует и запускает библиотеку requests.
Интеграция с другими сборщиками:
Системы вроде Pants, Buck и {py}gradle умеют автоматически собирать .pex-архивы из вашего кода.
Лицензия: Apache 2.0
▪ GitHub: https://github.com/pex-tool/pex
▪Документация: https://docs.pex-tool.org/
@pythonl
from collections import defaultdict
multidict = defaultdict(list)
multidict["SW"].append("Han Solo")
multidict["SW"].append("R2D2")
🔁 Теперь каждый ключ по умолчанию сопоставляется с пустым списком. А append добавляет новое значение в этот список.
Но будь внимателен: это немного “обман”. На самом деле словарь всё ещё отображает один ключ → одно значение. Просто это значение — список, в который ты уже сам кладёшь что угодно.
Почему defaultdict удобен?
Потому что тебе не нужно проверять, есть ли ключ в словаре. Пустой список будет создан автоматически при первом обращении к ключу.
@pythonl
Available now! Telegram Research 2025 — the year's key insights 
