Python RU
Все для python разработчиков админ - @haarrp @python_job_interview - Python собеседования @ai_machinelearning_big_data - машинное обучение @itchannels_telegram - 🔥лучшие ит-каналы @programming_books_it - it книги @pythonl РКН: clck.ru/3Fmy2j
显示更多📈 Telegram 频道 Python RU 的分析概览
频道 Python RU (@pro_python_code) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 12 504 名订阅者,在 技术与应用 类别中位列第 10 153,并在 俄罗斯 地区排名第 53 001 位。
📊 受众指标与增长动态
自 невідомо 创建以来,项目保持高速增长,吸引了 12 504 名订阅者。
根据 08 六月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 -81,过去 24 小时变化为 -1,整体触达仍然可观。
- 认证状态: 未认证
- 互动率 (ER): 平均受众互动率为 7.21%。内容发布后 24 小时内通常能获得 2.89% 的反应,占订阅者总量。
- 帖子覆盖: 每篇帖子平均可获得 901 次浏览,首日通常累积 361 次浏览。
- 互动与反馈: 受众积极参与,单帖平均反应数为 7。
- 主题关注点: 内容集中在 api, docker, github, sql, linux 等核心主题上。
📝 描述与内容策略
作者将该频道定位为表达主观观点的平台:
“Все для python разработчиков
админ - @haarrp
@python_job_interview - Python собеседования
@ai_machinelearning_big_data - машинное обучение
@itchannels_telegram - 🔥лучшие ит-каналы
@programming_books_it - it книги
@pythonl
РКН: clck.ru/3Fmy2j”
凭借高频更新(最新数据采集于 09 六月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。
`lru_cache` используется в качестве декоратора для функции fibonacci. Поскольку последовательность Фибоначчи может быть вычислительно затратной для больших входных данных, кэширование результатов для каждого вызова может значительно ускорить последующие вызовы с теми же аргументами.
Однако декоратор кэширования не следует использовать в каждом конкретном случае. Для функций, результаты которых меняются даже при одинаковых входных данных, или для функций, выходными данными которых являются изменяемые объекты, кэширования следует избегать.
При первом вызове `fibonacci(35)` функция вычислит результат обычным способом, учитывая рекурсивный характер последовательности Фибоначчи. Это может занять много времени.
Однако при втором вызове `fibonacci(35)` вместо повторного вычисления функция просто найдет значение в кэше и вернет его. В результате время выполнения второго вызова будет значительно меньше, что свидетельствует о пользе кэширования.
Фактическое время выполнения на вашей машине будет зависеть от ее вычислительной мощности, но, скорее всего, вы увидите заметную разницу между двумя вызовами.
Помните, что lru_cache может ускорить только последующие вызовы с теми же параметрами. Если вызвать fibonacci(36) после fibonacci(35), то все равно придется вычислять значение. Однако вычисление будет происходить быстрее, чем без кэша, так как fibonacci(35) уже закешировано, и ему нужно только добавить к нему fibonacci(34).
@pro_python_code[{time: время, flag: цвет флага, start_finish: ‘’}]
◾️ время согласно графику работы: часы, минуты;
◾️ цвет флага: зелёный – после него время нужно учитывать, красный – после него время учитывать не нужно;
◾️ ‘’ – этому элементу позже будет присвоено значение «старт» или «финиш», в зависимости от того точка А или точка В расположена левее данной временной отсечки.
Для удобства восприятия покажем только values, но подразумеваем, что keys и фигурные скобки тоже присутствуют. В нашем случае получится следующий результат:
Понедельник:
[{time: 10:00, flag: зелёный, start_finish: ‘’},
{time: 19:00, flag: красный, start_finish: ‘’},
{time: 13:00, flag: красный, start_finish: ‘’},
{time: 14:00, flag: зелёный, start_finish: ‘’}]
И так для каждого дня.
Таким образом, на этом этапе нужно составить словарь, включающий режим работы по дням недели с учетом обеденного перерыва. Мы сознательно не приводим код для этой части работы, поскольку, по сути, это подготовка данных, а не сам алгоритм расчета потерь времени. Эта часть зависит от формата представления исходных данных.
Шаг 2:
Схожим образом представим точки A и B:
[{time: дата + время, flag: ‘’, start_finish: старт/финиш}]
▪️дата + время: год, месяц, день, часы, минуты;
▪️‘’ – на место этого элемента в дальнейшем будет подставлен красный или зелёный флаг, (по цвету флага ближайшего соседа слева на временной шкале);
▪️старт/финиш: старт – это точка А, финиш – В.
A: {time: 01.03.2023 11:00, flag: ‘’, start_finish: ‘старт’}
B: {time: 02.03.2023 11:00, flag: ‘’, start_finish: ‘финиш’}
Шаг 3:
Определим все дни между точками A и B включительно и подтянем из графика работы по этим дням все флаги, а также сами точки А и В. Данные из нашего примера превратятся в список. Теперь ключевой момент, на котором, собственно, и строится весь алгоритм: отсортируем список по возрастанию даты и времени. Это важно, т.к. позволит нам идти в цикле от отсечки к отсечке, проверяя, нужно ли включать следующий за ней отрезок в расчет.
[{time: 01.03.2023 10:00, flag: ‘зелёный’, start_finish: ‘’}
{time: 01.03.2023 11:00, flag: ‘’, start_finish: ‘старт’}
{time: 01.03.2023 13:00, flag: ‘красный’, start_finish: ‘’}
{time: 01.03.2023 14:00, flag: ‘зелёный’, start_finish: ‘’}
{time: 01.03.2023 19:00, flag: ‘красный’, start_finish: ‘’}
{time: 02.03.2023 10:00, flag: ‘зелёный’, start_finish: ‘’}
{time: 02.03.2023 13:00, flag: ‘красный’, start_finish: ‘’}
{time: 02.03.2023 13:30, flag: ‘’, start_finish: ‘финиш’}]
Код для шагов 2 и 3:
ПодробнееFROM python:3.11-slim
Шаг 2: Создание непривилегированного пользователя
Официальный образ контейнера Python не содержит предустановленного непривилегированного пользователя. Поэтому нам необходимо его создать. Мы создадим пользователя с UID 1000 и GID 1000.
RUN groupadd -g 1000 python && \
useradd -r -u 1000 -g python python
Шаг 3: Копирование и установка зависимостей
Если ваше приложение имеет какие-либо зависимости, то их необходимо скопировать в контейнер и установить. Это можно сделать с помощью инструкций COPY и RUN.
COPY requirements.txt .
RUN pip install -r requirements.txt
Шаг 4: Настройка рабочего каталога
Далее необходимо создать внутри контейнера каталог, в котором будет храниться исходный код нашего приложения. Мы создадим каталог /app и убедимся, что он принадлежит непривилегированному пользователю, которого мы создали на шаге 2.
RUN mkdir /app && chown python:python /app
WORKDIR /app
Шаг 5: Скопируйте код приложения
Теперь необходимо скопировать исходный код нашего приложения в рабочий каталог.
COPY app.py .
Шаг 6: Запуск от имени непривилегированного пользователя
Нам необходимо убедиться, что процессы, запущенные в нашем контейнере, будут выполняться в непривилегированном режиме.
Это можно сделать с помощью инструкции USER.
USER 1000
Шаг 7: Задание команды входа
Наконец, необходимо указать, какая команда должна быть выполнена при запуске контейнера. Мы хотим выполнить исходный код нашего приложения, поэтому используем инструкцию CMD.
CMD ["python", "app.py"]
После выполнения этих шагов можно собрать образ Docker с помощью следующей команды:
docker build -t my-python-app .
Для запуска контейнера можно воспользоваться следующей командой:
docker run -p 8080:80 my-python-app
Это приведет к запуску контейнера и открытию порта 8080 на хост-машине. Теперь вы можете получить доступ к своему приложению по адресу http://localhost:8080.
Ниже приведен пример Dockerfile для простого Python-приложения:
FROM python:3.11-slim
RUN groupadd -g 1000 python && \
useradd -r -u 1000 -g python python
COPY requirements.txt .
RUN pip install -r requirements.txt
RUN mkdir /app && chown python:python /app
WORKDIR /app
COPY app.py .
USER 1000
CMD ["python", "app.py"]
Для создания образа Docker необходимо выполнить следующую команду:
docker build -t my-python-app .
Для запуска контейнера необходимо выполнить следующую команду:
docker run -p 8080:80 my-python-app
Это приведет к запуску контейнера и открытию порта 8080 на хост-машине. После этого вы сможете получить доступ к своему приложению по адресу http://localhost:8080.
@pro_python_code
现已上线!2025 年 Telegram 研究 — 年度关键洞察 
