Python RU
12.3K subscribers
1.06K photos
103 videos
40 files
1.3K links
Все для python разработчиков

админ - @haarrp

@python_job_interview - Python собеседования

@ai_machinelearning_big_data - машинное обучение

@itchannels_telegram - 🔥лучшие ит-каналы

@programming_books_it - it книги

@pythonl

РКН: clck.ru/3Fmy2j
Download Telegram
🧡Создание приложения для потоковой передачи видео с физическими элементами управления

Как создать на Python приложение для потокового видео, которым можно управлять с помощью физических кнопок?

Мы будем использовать микроконтроллер (например, Arduino или Raspberry Pi) для взаимодействия с физическими кнопками и обмена данными с нашей программой на Python. Цель – запускать и останавливать потоковое видео нажатием физических кнопок.

Необходимые условия:
Прежде чем мы начнем, вам потребуется следующее:

1. Компьютер с установленным Python.
2. Веб-камера, подключенная к компьютеру.
3. Микроконтроллер (например, Arduino, Raspberry Pi) с подключенными к нему кнопками.
4. Базовые знания по программированию на языке Python.

Настройка оборудования
✔️ Сначала настройте аппаратные компоненты:

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

Установление связи
✔️ Далее следует установить канал связи между программой на языке Python и микроконтроллером. Для этого можно использовать последовательный интерфейс USB или другие интерфейсы в зависимости от выбора аппаратного обеспечения.

В данном примере мы будем использовать последовательный интерфейс USB.

Написание кода на языке Python
✔️ Теперь напишем код на языке Python для управления видеопотоком с помощью физических кнопок. Мы будем использовать OpenCV для захвата видео с веб-камеры и вывода его на экран. Кнопки, подключенные к микроконтроллеру, будут передавать команды на запуск и остановку видеопотока.

import cv2

# Initialize the webcams
cap_self = cv2.VideoCapture(0)
cap_other = cv2.VideoCapture(1) # Change the index to the appropriate camera for the other user

# Check if the webcams are opened successfully
if not cap_self.isOpened() or not cap_other.isOpened():
print("Error: Could not open one or both of the webcams.")
exit()

# Create a window to display both video feeds side by side
cv2.namedWindow("Video Chat App", cv2.WINDOW_NORMAL)
cv2.resizeWindow("Video Chat App", 640, 480) # Adjust the window size as needed

while True:
# Read frames from both webcams
ret_self, frame_self = cap_self.read()
ret_other, frame_other = cap_other.read()

if not ret_self or not ret_other:
print("Error: Could not read frames from one or both of the webcams.")
break

# Resize frames to have the same dimensions (optional)
frame_self = cv2.resize(frame_self, (320, 240))
frame_other = cv2.resize(frame_other, (320, 240))

# Concatenate frames horizontally to display side by side
display_frame = cv2.hconcat([frame_self, frame_other])

# Display the concatenated frame in the window
cv2.imshow("Video Chat App", display_frame)

# Break the loop when the 'q' key is pressed
if cv2.waitKey(1) & 0xFF == ord('q'):
break

# Release the webcams and destroy the window
cap_self.release()
cap_other.release()
cv2.destroyAllWindows()


Тестирование установки
Загрузите в микроконтроллер микропрограмму для обнаружения нажатия кнопок. Убедитесь, что она посылает команду “START” (s – ‘старт’ в моем коде) при нажатии одной кнопки и команду “STOP” (q – ‘стоп’ в моем коде) при нажатии другой кнопки.
Запустите программу на Python на своем компьютере.
При нажатии соответствующей кнопки на микроконтроллере вы
должны увидеть в окне OpenCV запуск и остановку видеопотока.

⬅️ Мы создали приложение для потоковой передачи видео с физическими кнопками запуска и остановки с помощью Python и микроконтроллера.

⬅️ Этот проект демонстрирует, как интегрировать аппаратные элементы управления с программой на Python для расширения функциональности и улучшения взаимодействия с пользователем.

⬅️ Вы можете расширить этот проект, добавив дополнительные функции или интегрировав его с другими аппаратными компонентами.

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤2🔥2
🔥 Дайджест полезных материалов из мира : Python за неделю

Почитать:
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— Monitoring System (SpyWare) с C2 сервером на базе чат-бота в telegram. Часть 1: Создание бота
— Тестирование производительности на Python: Пошаговое руководство с Flask
— DVC — прекрасный инструмент для DataScience
— Циркуль и линейка. Часть 1
— Кто отвечает за развитие Python
— Архитектура высоконагруженных телеграм-ботов на Python
— Let me teach you the ancient method of Fu Thai! Гнев и ненависть брутфорсеров в 2023 году
— Моделирование биологических явлений с помощью Python
— Визуальное RPG с долговременной памятью, генерируемое из 3 нейросетей и LLamы
— Деревья решений в pySpark: от семечка до параметрической оптимизации случайного леса
— Стайлгайд PySpark: как сделать код элегантным
— Short-circuiting
— Tuple Immutability
— How Does Nerve Regen Formula Work?
— Code Review - The foundation for quality software
— Trying to bridge the gap between WFC “Even Simpler Tiled Model” and Constraint Satisfaction Problem (CSP) propositional rules
— Code review - a unique way of debugging
— Automating Product Descriptions in Odoo with OpenAI's GPT-3 and Python
— Creating Own Chat GPT
— Elastic D&D - Week 4 - Text Note Input
— Scenario-Based Testing with Vedro

Посмотреть:
🌐 Невероятная нейросеть переводит любое видео на другие языки с сохранением оригинального голоса. (⏱ 00:55)
🌐 Python анализ данных с Pandas. PandaSQL (⏱ 12:13)
🌐 Python анализ данных с Pandas. Join, merge, concat в Pandas (⏱ 19:25)
🌐 Python+SQL часть2 создание таблиц. (⏱ 05:15)
🌐 Управление жестами всегда было в ваших часах, просто его нужно было активировать. (⏱ 00:11)
🌐 Уроки Golang с нуля /#28 - Встраивание типов (⏱ 06:16)
🌐 Python анализ данных с Pandas. (⏱ 17:04)
🌐 Уроки Golang с нуля /#27 - Bufio. Чтение и запись (⏱ 10:35)
🌐 Задание 12 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 04:58)
🌐 Задание 13 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 04:05)
🌐 Python для начинающих. Урок 11 | Списки (⏱ 22:42)
🌐 Сколько зарабатывают программисты в Google #shorts (⏱ 00:50)
🌐 Email рассылка с Яндекс почты с помощью Python (⏱ 05:05)

Хорошего дня!

@pro_python_code
👍6❤1🔥1
👨‍💻 7 шагов по контейнеризации Python-приложений

Контейнеризация Python-приложений с помощью Docker – это отличный способ сделать их более переносимыми, масштабируемыми и безопасными. В этой статье мы рассмотрим 7 простых шагов по контейнеризации Python-приложения с помощью Docker

Шаг 1: Установка базового образа
Первым шагом является выбор базового образа для контейнера. Мы рекомендуем использовать минимальный базовый образ, например python:3.11-slim. Это позволит уменьшить размер контейнера и повысить его безопасность.
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.

Вот несколько дополнительных советов по контейнеризации Python-приложений:

⬅️ Используйте многоступенчатую сборку, чтобы отделить процесс сборки от среды выполнения. Это позволит сделать образ Docker меньше и эффективнее.
⬅️ Используйте тома для монтирования каталогов с хост-машины в контейнер. Это позволит разрабатывать и отлаживать приложение внутри контейнера без необходимости пересобирать образ при каждом изменении.
⬅️ Использовать реестр Docker для хранения и совместного использования образов Docker.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2❤1
🖥 Универсальный алгоритм расчета потерь рабочего времени на Python

1. Постановка задачи, частные решения и их проблемы

2. Описание алгоритма

Разберём пошагово наш алгоритм.

Шаг 1:

Представим наш график как список словарей по временным отсечкам для каждого дня недели в следующем виде:

[{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:

Подробнее
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3🔥1
📹 Устраиваемся на работу. Решаем тестовое задание на позицию Python Junior.

▪Видео
▪Задание
▪ Код из видео
▪Тест
▪ Список реальных тестовых заданий с собеседований.

@pro_python_code
❤5👍3🔥2
🏃Как ускорить базу данных при помощи шардирования

• Шардирование было одним из первых механизмов, позволяющих распределять базы данных для повышения их производительности. Последние инновации превратили шардирование в один из лучших механизмов в своем роде.

🤔 Для чего требуется шардирование?

• Традиционные базы данных порой не справляются с обработкой растущих объемов данных и нарастающего трафика запросов. Сегодня очень популярны концепции NoSQL и NewSQL – соответственно, на рынке баз данных появляется все больше продуктов, вдохновленных этими новыми концепциями. Но их одних недостаточно, чтобы решить все более серьезные проблемы с данными.

Шардирование – это прием, позволяющий разбивать данные на отдельные строки и столбцы, хранимые на отдельных инстансах серверов базы данных. Так удается распределить нагрузку, оказываемую трафиком. Каждая такая малая таблица называется «шард». Некоторые NoSQL-продукты шардируются, таковы, например, Apache HBase или MongoDB. Шардинговая архитектура встроена в NewSQL-системы.

👀Как шардировать базу данных?

Один из наилучших способов создания шардов таков: данные нужно разделять на множество небольших таблиц. Они также называются «сегментами» (partitions).

Вот две ключевые составляющие шардирования:

▪Шардинговый ключ: конкретное значение в столбце, указывающее, в каком шарде хранится данная строка.
▪Шардинговый алгоритм: алгоритм, согласно которому ваши данные распределяются в одном или нескольких шардах.

Шаг 1: Проанализировать сценарий запроса и распределение данных, чтобы найти шардинговый ключ и шардинговый алгоритм

Шаг 2: Миграция имеющихся данных

Шаг 3: Перебросить трафик на новый кластер

Более детально тут. 👈

@pro_python_code
❤4👍2🔥1
📱 Как защитить телеграм бота от атак и перегрузок.

Данный урок раскроет способы обеспечения безопасности телеграм-бота на Python.

• Видео

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤3👎1🥰1
🖥 Асинхронный парсер Хабра на Python

• Видео
• Код парсера

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1
⚡️ Развертывание приложений Python в Azure

Будучи инженером облачных технологий, который увлекается разработкой приложений, я недавно задумался над тем, как превращать локальные прототипы/приложения в ценные инструменты, доступные другим членам организации и особенно полезные в корпоративных средах.
Покажу, как легко можно запустить такие инструменты в облаке!

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

Часто бывает так, что талантливый программист или инженер натыкается на полезную библиотеку, фреймворк или инструмент, создает очень эффектную демо-версию, показывает ее своей команде — и на этом все заканчивается. Почему? Это может быть связано с целым рядом факторов, включая:

▪️неопределенность в отношении затрат;
▪️отсутствие идей по запуску инструмента в работу;
▪️неуверенность в учете всех ключевых моментов.

Цель этой статьи — доказать, что выбрать фреймворк, создать с ним приложение и доставить его конечным пользователям можно довольно легко. В данном случае нашим выбором будет Streamlit — популярный фреймворк, помогающий создавать веб-приложения для визуализации данных.

Смысл статьи заключается в том, чтобы предложить отличный способ создания приложений, который недостаточно используется. На самом деле большинство SaaS/PaaS-инструментов, таких как Power BI и Dynamics, подойдут вам в ряде случаев — будь то создание дашбордов, разработка приложения типа CRUD или чего-то еще. Однако если вы хотите использовать действительно крутые приложения (и при этом легко их создавать) и делать их доступными для других людей, читайте дальше!

Что такое Streamlit и почему его стоит использовать?
Лучшее описание этого инструмента дано на сайте Streamlit: это фантастическая библиотека для разработки веб-приложений, предназначенных для взаимодействия с данными.

Лично мне Streamlit нравится по двум причинам.

• Streamlit проще в использовании, чем многие другие инструменты. Это очень простая библиотека по созданию приложений для работы с данными. В нее можно очень легко включать компоненты, созданные в других библиотеках, таких как Seaborn и Altair.
• Streamlit имеет презентабельный вид. Большинство пользователей библиотеки считают, что в ней есть je ne sais quoi (фр. — нечто, невыразимое словами, но моментально покоряющее, убеждающее в качестве). Streamlit легко использовать благодаря высокому качеству доступной документации.

Следует подчеркнуть, что ни один инструмент, библиотека или фреймворк не является панацеей для решения всех проблем. Какую библиотеку выбрать и когда — это отдельный разговор, и мы не будем заострять на нем внимание. То, что будет продемонстрировано здесь, применимо и к другим фреймворкам на других языках.

Как запустить приложение?

📌 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍1🔥1
«Библиотека программиста» запустила два новых канала для Python-разработчиков и тех, кто хочет ими стать👨‍🏫

В них мы:
🔸тренируемся на практических задачах
🔸отвечаем на популярные вопросы с собеседований
🔸проверяем свои знания

Подписывайтесь:
👉Библиотека собеса по Python — тут мы готовимся к интервью
👉Библиотека задач по Python — тут решаем задачи, проходим тесты и изучаем код
👍3😁2
🔥 Дайджест полезных материалов из мира Python за неделю

Почитать:
— Как сделать вашего телеграм-бота лучше? Конечно, добавить ему аналитику
— Microsoft предлагает БЕСПЛАТНЫЕ онлайн курсы с сертификацией
— 7 шагов по контейнеризации Python-приложений
— MySQL в Google Colab: Бесшовная интеграция
— Сделали по красоте: победители «Конкурса красоты кода»
— Перелом в судьбе змеи: как Python менял версию с 2 на 3
— Как найти популярные NFT коллекции в блокчейне TON — ранжируем коллекции c помощью индексатора dton.io и Python
— Летадло, предисловие
— Python + PIL + Pyrogram = Кастомные эмодзи для Telegram
— S.T.A.R.K. — первый фреймворк для создания голосового ассистента
— Пишем компилятор C в 500 строках Python
— Dragon Userbot — расширение возможностей Вашего Telegram-аккаунта до уровня, ограниченного лишь Вашей фантазией
— Получаем список товаров из чека ИФНС (Raspberry + FreePBX + telegram + sheets)
— Conquer MS-101: Dumpsarena Offers Reliable Study Materials
— How to Easily Try Out boto3 Interactively in AWS CloudShell
— Kafka Ease: Simplifying Kafka Topic and ACL Management
— A Python script to see my most watched YouTube videos
— No One Expects the self._spanish_inquisition (Because it’s protected)
— My Experience learning Python and SQL
— Lovely Silk
— My first contribution to other open source project
— Data Science Essentials: Your Path to Effective Dataframe Joins with Pandas
— Customizing RAG Pipelines to Summarize Latest Hacker News Posts with Haystack 2.0 Preview

Посмотреть:
🌐 Python Matplotlib. Визуализация данных на PRO уровне. (⏱ 24:43)
🌐 Устраиваемся на работу. Решаем тестовое задание на позицию Python Junior. (⏱ 20:28)
🌐 Уроки Golang с нуля /#29 - Дженерики/обобщения (⏱ 10:52)
🌐 Уроки Golang с нуля /#30 - Горутины (⏱ 08:09)
🌐 Революционный генератор музыки на основе искусственного интеллекта (⏱ 00:12)
🌐 Серьезные проблемы с безопасностью в телеграм! (⏱ 00:24)
🌐 Задание 14 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 07:19)
🌐 Задание 16 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 02:09)
🌐 Задание 15 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 03:23)
🌐 Задание 17 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 07:17)


Хорошего дня!
👍6❤1🔥1
🖥 Django начало работы

▪ Video

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2❤1
❤️ Парсер телеграм каналов на Python. Гайд по написанию мощного бота.

▪Видео

@pro_python_code
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2❤1👎1
🔥 Дайджест полезных материалов из мира Python за неделю

Почитать:
— Тестовые серверы Telegram: инструкция по эксплуатации
— Функциональное программирование в Python: ежедневные рецепты
— Откройте свое будущее: Изучите 15 бесплатных курсов IBM прямо сейчас
— Apache Spark и PySpark для аналитика. Учимся читать и понимать план запроса в SparkUI
— Пишем АПИ автотесты на Python по шагам
— Извлечение текста из файлов PDF при помощи Python
— Детекция дефектов дорожного покрытия без размеченных данных: Хакатон, LiDAR, RANSAC, ICP и 44 бесcонных часов
— Преобразование markdown в pdf на Python
— Как «продать» OSS Framework? Propan -> FastStream
— FIFO очередь asyncio в Python
— Тестируем API в Таверне
— Comment ajouter des hyperliens aux documents Word avec Python
— EDA using Data Visualization techniques
— Becoming an AWS All Builders Welcome Grant Alumni Mentor: Empowering the Next Generation of Innovators
— New Features with Git Remotes
— Trabaje con sus datos en tiempo real usando Langchain
— TIL Remote in Git and TOMLLIB in Python
— Exploratory Data Analysis using Data Visualization Techniques.
— My First Pull Request in Hacktoberfest23
— documented: make docstrings in your exceptions work
— MongoDB Quick Start Guide 🍃⚡️

Посмотреть:
🌐 Разбор задачи с собеседования Data Science. Подготовка на практике (⏱ 26:12)
🌐 Cобеседование #Python топовый банк Goldman Sachs Associate на 12000 $ #задача #программирование (⏱ 01:00)
🌐 Django создание модели. Вывод даных на страницу (⏱ 13:01)
🌐 Решаем задачу с leetcode на #Golang (⏱ 00:37)
🌐 Facebook задача с собеседования на #Python на 120000 рублей #программирование #задача #код (⏱ 00:59)
🌐 Разбора задачи с собеседования #Golang (⏱ 00:22)
🌐 Задание 22 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 07:55)
🌐 Задание 23 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 02:50)

Хорошего дня!

@pro_python_code
👍6🔥2❤1
🚀🧠**lru_cache**: отличная техника для эффективного кодинга!🚀🧠

В данном коде `lru_cache` используется в качестве декоратора для функции fibonacci. Поскольку последовательность Фибоначчи может быть вычислительно затратной для больших входных данных, кэширование результатов для каждого вызова может значительно ускорить последующие вызовы с теми же аргументами.

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

При первом вызове `fibonacci(35)` функция вычислит результат обычным способом, учитывая рекурсивный характер последовательности Фибоначчи. Это может занять много времени.

Однако при втором вызове `fibonacci(35)` вместо повторного вычисления функция просто найдет значение в кэше и вернет его. В результате время выполнения второго вызова будет значительно меньше, что свидетельствует о пользе кэширования.

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

Помните, что lru_cache может ускорить только последующие вызовы с теми же параметрами. Если вызвать fibonacci(36) после fibonacci(35), то все равно придется вычислять значение. Однако вычисление будет происходить быстрее, чем без кэша, так как fibonacci(35) уже закешировано, и ему нужно только добавить к нему fibonacci(34).

@pro_python_code
👍7❤1👎1🔥1
🔥 Дайджест полезных материалов из мира Python за неделю

Почитать:
— RestApi от мала до велика. А ты правильно проектируешь методы?
— Сравнение методов веб-скрепинга для данных Википедии: Beautiful Soup против WikipediaAPI
— Как я проектирую и разрабатываю расширения Python на Rust
— Построение ML-пайплайна для рекомендательной системы с помощью Google Cloud Platform
— Как PaaS решил проблемы стандартизации разработки сервиса одной утилитой
— Введение в библиотеку Diffusers и диффузионные модели
— «Консервируем» данные: сравниваем модуль pickle и альтернативные способы сериализации
— Сбер. Как некрасиво поступить на конкурсе красоты
— Что я понял на первой работе программистом / Мои советы Junior-разработчикам
— Swirl для анализа корпоративных данных: как мы использовали ИИ-поиск и что из этого вышло
— MLOps на примере прогноза движений акций с помощью MLRun
— Tuning Out Spotify: A Programmer’s Approach to Music Streaming
— Automating Python Deployments with GitHub Actions, AWS ECR, and AWS Lambda
— Weekly Dev Findings 9
— Infinite Scroll Pagination in Django with HTMX
— Reflex: 10 Minute Docs Audit
— Milvus Adventures | October 13, 2023
— Docker with Python for Dummies
— CS61A: Projeto HOG (Parte 1)
— Keep It Uplifting podcast. James “Uplifting” Edwards explores the intersection of lifestyle and success with Richard Blank.
— Testando testes no Python - Parte 3: Pytest dentro do Pytest

Посмотреть:
🌐 Chatgpt, Bard , Claude, Theb - используй API лучших нейросетей бесплатно и без ВПН на Python. (⏱ 05:23)
🌐 NLP практика. Определяем тональность текста при помощи NLTK и DL (⏱ 19:37)
🌐 Django шаблонизация и маршрутизация (⏱ 09:11)
🌐 Задача, которая очень часто встречается на собеседованиях #python (⏱ 00:59)
🌐 Решение непростой задачи с Leetcode, часто всплывает на собеседования #pythontutorial (⏱ 00:59)
🌐 Хитрая задача с собеседования #Python (⏱ 00:59)
🌐 Решаем вариант из сборника Л. Н. Евич | ЕГЭ-2024 по информатике (⏱ 01:48:21)
🌐 Задание 24 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 06:35)
🌐 Задание 25 | ЕГЭ по информатике | ДЕМО-2024 (⏱ 03:44)
🌐 Linux для начинающих | Как загрузить файлы на или с сервера | Команда SCP (⏱ 04:35)

Хорошего дня!

@pro_python_code
👍5🔥1
This media is not supported in your browser
VIEW IN TELEGRAM
🐍 Mastering Financial Engineering: От моделирования на Python к интерактивным приложениям

Финансовый инжиниринг включает в себя сложные вычисления и моделирование для анализа и решения финансовых проблем.

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

В этой статье мы рассмотрим, как с помощью Python превратить простой код моделирования цены опциона Монте-Карло в развернутое приложение. Это не только улучшит ваше понимание, но и поможет эффективно донести финансовые концепции с помощью визуализаций и пользовательских приложений.

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

1. Организуйте рабочее пространство
Шаг 1.1: Создание выделенной папки

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

Далее
❤5👍2🔥1