Senior Python Developer
41.1K subscribers
2.23K photos
6 videos
1 file
552 links
№ 4931117861
Публикуем интересные/полезные фичи/библиотеки языка.

По вопросам сотрудничества: @adv_and_pr

Канал на бирже:
https://telega.in/c/seniorpy
Download Telegram
⚠️ Модель работает, но её сложно поддерживать: этапы обработки данных разрознены, обучение нестабильно, результат трудно воспроизвести. Без единого контура управления такие решения быстро теряют ценность.

1 июня в 18:00 МСК приглашаем вас на открытый урок курса «Машинное обучение. Продвинутый уровень».

🦾 На занятии вы разберёте, как с помощью Pipeline объединить подготовку данных, обучение и проверку модели в единую цепочку. Поймёте, как строить составные решения с промежуточными этапами и управлять ими без хаоса. Покажем, как это работает на практике и как применять в реальных задачах.

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

➡️ Зарегистрируйтесь, чтобы научиться выстраивать устойчивые решения в машинном обучении: https://otus.pw/igEZ/

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
hYPerSonic

hYPerSonic – это фреймворк на языках Python и C. Используется для разработки и эксплуатации конвейеров обработки звука, предназначенных для управления в реальном времени. Эта структура является низкоуровневой, в которой подсчитывается каждый байт, и это также включает объекты для звуковой карты, фильтрует операции с памятью, file – io и осцилляторы. Эта структура работает в операционных системах Linux и OSX.

https://github.com/lwcook/hypersonic-simulation
Разбиваем видео на n кол-во изображений

Для разбиения видео на n количество изображений вам понадобится использовать библиотеку OpenCV в Python.

В этом примере функция video_to_images принимает путь к видео (`video_path`) и количество желаемых изображений (`frames_count`). Она открывает видеофайл, читает каждый кадр и сохраняет каждый "шаг" кадров как отдельное изображение. Затем функция прекращает обработку, когда необходимое количество изображений сохранено.

Обратите внимание, что код использует целочисленное деление // и целочисленное преобразование int() для обеспечения, чтобы каждое изображение было сохранено через примерно одинаковое количество кадров, чтобы равномерно распределить их по времени видео.
Узнаем разницу в днях между датами представленными в виде строк

В данном коде мы используем функцию strptime из модуля datetime, чтобы преобразовать строки в объекты datetime. Затем мы вычисляем разницу между датами с помощью оператора - и получаем абсолютное значение разницы с помощью функции abs. Наконец, мы получаем разницу в днях, используя атрибут days разницы объекта.
Напишите функцию на Python, которая принимает на вход список чисел и возвращает наибольшую возрастающую подпоследовательность (непоследовательные числа, идущие в порядке возрастания) из исходного списка

Для решения этой задачи используется динамическое программирование. Мы создаем массив dp, где dp[i] представляет собой длину наибольшей возрастающей подпоследовательности, заканчивающейся в nums[i]. Затем мы выполняем двойной цикл, чтобы найти наибольшую длину для каждого элемента. После этого мы определяем саму подпоследовательность, начиная с наибольшей длины и двигаясь обратно по массиву dp.

Пример использования:
python
nums = [3, 12, 5, 8, 10, 2, 1]
result = longest_increasing_subsequence(nums)
print(result) # Output: [3, 5, 8, 10]


Эта функция найдет наибольшую возрастающую подпоследовательность из списка [3, 12, 5, 8, 10, 2, 1], которой будет [3, 5, 8, 10], и выведет ее в консоль.
Python декораторы на максималках. Универсальный рецепт по написанию и аннотированию от мала до велика

Декорирование функций - это, наверное, самая сложная среди базовых и самая простая среди продвинутых фич языка Python.

Смотреть статью
Ход короля

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

Программа должна вывести «YES», если из первой клетки ходом короля можно попасть во вторую, или «NO» в противном случае.
Задача

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

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

В приведенной выше реализации скрипт использует данные отправителя и получателя, а также тему и текст сообщения. Затем скрипт подключается к SMTP-серверу Gmail, форматирует сообщение и отправляет его с помощью метода sendmail() . Наконец, скрипт выводит сообщение, указывающее, что электронное письмо было успешно отправлено, и отключается от SMTP-сервера.

Подробнее про smtplib можно почитать здесь.
__init__

__init__ является методом, который используется для инициализации объектов при создании экземпляров классов. Этот метод называется «конструктором» класса и выполняется автоматически при создании нового объекта данного класса.

Когда вы создаете новый объект путем вызова конструктора класса, передавая ему аргументы, эти аргументы могут быть использованы для установки начальных значений атрибутов объекта. Внутри метода __init__ вы можете определить, какие атрибуты должны быть созданы для объекта и как им присвоены начальные значения.

#для_начинающих
Паттерн проектирования «Фасад»

Паттерн проектирования «Фасад» (Facade) используется для предоставления унифицированного интерфейса к группе интерфейсов подсистемы. Он позволяет скрыть сложность и детали взаимодействия между различными компонентами системы, предоставляя клиенту более простой и удобный способ взаимодействия.

#для_продвинутых
«Циклический сбор мусора»

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

Вы можете влиять на этот процесс с помощью модуля gc (garbage collector).

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

#для_продвинутых
This media is not supported in your browser
VIEW IN TELEGRAM
19 июня еду на CPC.Forum — международный форум по маркетингу в Москве!

Очень уж зацепила программа: хедлайнер Ксения Собчак и 100+ спикеров, которых все знают. Будут люди из Amazon, Skyeng, Яндекс, Церебро, Купер, Flowwow и других.

Очень хочу послушать выступления Максима Спиридонова и Георгия Лобушкина. Кого не успею услышать вживую — буду в записи пересматривать. Их получат все участники в безлимитное пользование.

Дополнительно на выставке компаний планирую пообщаться с брендами напрямую и посетить организованный нетворкинг (там будет прям отдельный тайминг под это дело). О себе расскажу и полезные контакты соберу.

Самое ценное, что все это в одном месте! Вместо десятка узкопрофильных конференций.

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

А вечером будет VIP-afterparty с концертом от группы 5sta Family.

📅 19 июня, Москва, Конгресс-центр ЦМТ

Поехали вместе! Предвосхищая вопросы — оставляю ссылочку на сайт форума)
Please open Telegram to view this post
VIEW IN TELEGRAM
unit-тесты

Unit-тесты (или unittests) — это метод тестирования ПО, который позволяет проверить, работает ли отдельная единица кода (обычно функция или метод) так, как ожидается. Библиотека unittest входит в стандартную библиотеку Python и предоставляет набор инструментов для написания и выполнения тестовых сценариев.

Писать хорошие unit-тесты — это важный аспект разработки программного обеспечения. Хорошие тесты обеспечивают надежность и поддерживаемость кода, помогают выявлять ошибки и улучшать качество продукта.

#для_начинающих
🔥 Приглашаем на бесплатный открытый вебинар курса «Высоконагруженные системы: архитектура и масштабирование»:

«Асинхронная обработка данных в высоконагруженных системах»

🗓 Когда: 16 июня, 20:00 (мск)

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

На вебинаре разберём, как грамотно внедрять асинхронность и строить по-настоящему производительные системы.

Что будет на вебинаре:
— Зачем и когда переходить на асинхронную обработку данных в высоконагруженных проектах
— Очереди сообщений, веб-сокеты и другие инструменты асинхронного взаимодействия
— Реальный архитектурный кейс: от веб-сервера до брокера сообщений и базы данных
— Типичные узкие места асинхронных систем и проверенные способы их устранения

Что вы получите:
— Чёткое понимание принципов асинхронной архитектуры и её влияния на производительность
— Реальные примеры решений, которые можно сразу применять в своих проектах
— Знания, как избегать типичных ошибок и строить стабильные, отказоустойчивые системы

👉 Зарегистрироваться: https://otus.pw/F4ko/

Бесплатное занятие приурочено к курсу «Высоконагруженные системы: архитектура и масштабирование», где вы научитесь проектировать высоконагруженные системы, способные выдерживать экстремальные нагрузки и работать стабильно в любых условиях.

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Паттерн проектирования «Стратегия»

«Стратегия» (Strategy) является одним из шаблонов поведения, определенных в книге «Банды четырёх» (Gang of Four, GoF). Этот паттерн относится к категории поведенческих паттернов и решает задачу определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет клиентскому коду выбирать нужный алгоритм независимо от его использования.

Основная идея паттерна «Стратегия» заключается в выделении алгоритмов в отдельные классы (стратегии) и предоставлении клиентскому коду возможности выбирать и подменять эти стратегии без изменения самого клиентского кода. Таким образом, паттерн способствует легкости поддержки, расширения и внесения изменений в систему.

#для_продвинутых
memory_profiler

memory_profiler — это сторонний модуль для языка программирования Python, который предоставляет инструменты для профилирования использования памяти в ваших программах. Этот модуль позволяет отслеживать изменения объема памяти во время выполнения кода, выявлять утечки памяти и оптимизировать использование памяти.

Для использования memory_profiler вы должны установить его сначала. Это можно сделать с помощью инструмента установки пакетов Python, такого как pip.

#для_начинающих
Закон Амдала

Закон Амдала — это концептуальное правило, описывающее ограничения ускорения, которое можно достичь при оптимизации только части вычислений в программе. Он был предложен Генри Амдалом в 1967 году и является важным принципом в области параллельных вычислений.

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

#для_продвинутых
Что такое линейная сложность сортировки?

Линейная сложность сортировки обозначает алгоритм сортировки, который имеет временную сложность, пропорциональную количеству элементов в сортируемом массиве (или коллекции). В математической нотации линейная сложность обозначается как O(n), где "n" - количество элементов.

Примером линейной сортировки может быть алгоритм «сортировка подсчётом» (counting sort). В этом алгоритме создается дополнительный массив для подсчета количества вхождений каждого элемента. Затем на основе этой информации о количестве вхождений каждого элемента строится отсортированный массив.

#для_начинающих
Что такое MRO?

MRO (Method Resolution Order) — это механизм, используемый для определения порядка разрешения методов при наследовании классов и множественном наследовании. MRO определяет, какие методы будут вызываться в случае, когда у наследующего класса есть методы с одинаковыми именами, унаследованными от разных базовых классов.

MRO в Python определяется с помощью алгоритма C3 Linearization (C3 линеаризации). Этот алгоритм гарантирует, что порядок разрешения методов будет согласован и предсказуем вне зависимости от порядка наследования. Он предотвращает проблемы, связанные с амбигуитетами и неоднозначностями в множественном наследовании.

#для_продвинутых