Получаем данные о системе
Кроссплатформенная библиотека psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе. Примеры базового использования показаны на картинке.
Если говорить про практические применение, psutil полезен в основном для мониторинга системы, ограничения ресурсов процессов и управления запущенными процессами.
Помимо привычных Windows, MacOS и Linux, библиотека также поддерживает системы FreeBSD, OpenBSD, NetBSD, Sun Solaris и AIX.
#psutil
Кроссплатформенная библиотека psutil позволяет получать информацию о процессоре, памяти, диске, сети, датчиках и запущенных процессах в системе. Примеры базового использования показаны на картинке.
Если говорить про практические применение, psutil полезен в основном для мониторинга системы, ограничения ресурсов процессов и управления запущенными процессами.
Помимо привычных Windows, MacOS и Linux, библиотека также поддерживает системы FreeBSD, OpenBSD, NetBSD, Sun Solaris и AIX.
#psutil
👍8❤1
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
В примере мы проверяем, есть ли значение у атрибута
То есть при вызове конструктора класса
#классы #паттерны
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
__new__
вызывается для создания экземпляра класса, перед вызовом __init__
. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).В примере мы проверяем, есть ли значение у атрибута
instance
. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.То есть при вызове конструктора класса
Singleton
, будет возвращаться один и тот же объект из памяти.#классы #паттерны
👍4❤2
Загрузка файлов асинхронно
Если у нас есть список
Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
С помощью метода
Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
Если у нас есть список
URL
картинок для загрузки, использование простого цикла for
позволит нам загрузить их последовательно, по одной за раз.Однако, для задач, включающих загрузку большого количества маленьких файлов, параллелизация может заметно ускорить процесс.
Для параллелизации мы можем использовать
ThreadPoolExecutor
из модуля concurrent.futures
. Этот инструмент позволяет выполнить функцию загрузки в нескольких параллельных потоках, где в конструкторе необходимо указать максимальное количество потоков для одновременного выполнения.С помощью метода
.map(download, urls)
можно развернуть функцию загрузки на каждый URL
из списка, обеспечивая их параллельную обработку.Важно понимать, что так как загрузка файлов является IO-операцией, данный метод не ускоряет выполнение кода в прямом смысле, а скорее позволяет начать загрузку следующего файла, не ожидая завершения предыдущего.
#python #threading
👍4❤2
Метод isspace()
Метод
Примечание:
#python
Метод
isspace()
— это строковый метод, который используется для проверки, состоит ли строка только из пробельных символов (пробелов, символов табуляции, символов новой строки и других символов, которые считаются «пробельными» в контексте языка Python).Примечание:
isspace()
не изменяет исходную строку, а просто возвращает булево значение в зависимости от условия.#python
👍5
Хорошую олимпиаду отличает прежде всего качество заданий и возможность получить как можно больше опыта.
Это как раз отличительные черты AIDAO — международной олимпиады для студентов, организованной Яндекс Образованием и ФКН НИУ ВШЭ.
— Задачи по ИИ и анализу данных
— Живое общение со студентами и экспертами
— Победителям — миллион рублей и преимущество при поступлении в магистратуры ФКН ВШЭ
— Масштабный финал в Москве
Чтобы принять участие в AIDAO нужно собрать команду из студентов и зарегистрироваться по ссылке
Это как раз отличительные черты AIDAO — международной олимпиады для студентов, организованной Яндекс Образованием и ФКН НИУ ВШЭ.
— Задачи по ИИ и анализу данных
— Живое общение со студентами и экспертами
— Победителям — миллион рублей и преимущество при поступлении в магистратуры ФКН ВШЭ
— Масштабный финал в Москве
Чтобы принять участие в AIDAO нужно собрать команду из студентов и зарегистрироваться по ссылке
👎1🔥1
Ускоряем код с помощью векторизации
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией
По сути,
#vectorize #numpy
Одним из приемов для ускорения работы циклов является векторизация вычислений, т. е. использование функций, которые поддерживают операции над векторами.
Вообще лучший способ ускорить любой цикл – это отказаться от него. В примере выше для работы с функцией
my_func
мы могли бы вызвать ее в цикле для каждого элемента списка, но гораздо проще использовать vectorize
.По сути,
vectorize
преобразует функцию таким образом, что она начинает принимать весь вектор целиком, а не отдельный его элемент. Надо помнить, что такой подход не всегда приводит к значительному ускорению.#vectorize #numpy
👍5❤1
Универсальный парсер статей
Пакет
Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Но точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница. Поэтому в некоторых случаях результат может отличаться от ожиданий.
#парсер #newspaper3k
Пакет
newspaper3k
позволяет парсить статьи и извлекать из них заголовки, текст, дату публикации, имена авторов и много другой информации.Плюс пакета в том, что весь процесс парсинга автоматизирован и не надо вручную искать нужные теги и тянуть из них данные.
Но точность парсера зависит в основном от того, как хорошо сверстана запрашиваемая страница. Поэтому в некоторых случаях результат может отличаться от ожиданий.
#парсер #newspaper3k
👍3
True Tech Champ 2025
Программируешь на Python, C++ или другом языке? Проверь себя на всероссийском чемпионате от МТС и поборись за часть призового фонда в 10 250 000 ₽.
Два трека:
Алгоритмический — классический олимпиадный формат, призовой фонд 2,75 млн ₽.
Программирование роботов — напиши код, чтобы робот прошёл лабиринт и реальные испытания на шоу-финале в Москве. Призовой фонд 7,5 млн ₽.
Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только.
Регистрация открыта до 20 октября.
Подробности тут.
Программируешь на Python, C++ или другом языке? Проверь себя на всероссийском чемпионате от МТС и поборись за часть призового фонда в 10 250 000 ₽.
Два трека:
Алгоритмический — классический олимпиадный формат, призовой фонд 2,75 млн ₽.
Программирование роботов — напиши код, чтобы робот прошёл лабиринт и реальные испытания на шоу-финале в Москве. Призовой фонд 7,5 млн ₽.
Трек будет интересен начинающим и опытным разработчикам: С++, Go, Python, JS, Java, C# и не только.
Регистрация открыта до 20 октября.
Подробности тут.
👎1🔥1
Объединяем видео и аудио потоки
Итак, дополнение к предыдущему посту.
Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке.
В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки
#youtube
Итак, дополнение к предыдущему посту.
Из-за технологии потоковой передачи DASH (Dynamic Adaptive Streaming over HTTP), используемой youtube, мы не можем получить сразу видео в нужном качестве со звуковой дорожкой из-за ее отсутствия в потоке.
В качестве решения мы можем по отдельности забрать аудио и видео и объединить с помощью утилиты ffmpeg. Для этого выбираем нужные потоки
video
и audio
, после чего передаем url
'ы в команду для инициирования создания процесса для скачивания и объединения потоков с помощью ffmpeg
.#youtube
🔥4
Применяем pathlib взамен os
В Python 3 стандартная библиотека включает модуль
Одно из наиболее впечатляющих преимуществ использования
В общем, этот модуль предлагает замену функциям для работы с файловыми путями из модуля
#path #os
В Python 3 стандартная библиотека включает модуль
pathlib
, предоставляющий функцию Path
, которая обеспечивает все необходимое для эффективной работы с путями к файлам.Одно из наиболее впечатляющих преимуществ использования
pathlib
- это упрощение работы с путями за счет использования Path
вместо os.path.join
, представляя более простой и изящный метод, как показано на изображении.В общем, этот модуль предлагает замену функциям для работы с файловыми путями из модуля
os
, таким как os.mkdir
или os.path
, на более удобные альтернативы.#path #os
👍5❤2
FFmpeg: Лучшее решение для обработки мультимедийных файлов
Для начала использования
Исходный код и документация доступны тут
FFmpeg
- это бесплатная и открытая библиотека и набор инструментов для обработки мультимедийных файлов. Она предоставляет мощные возможности для работы с видео, аудио и другими мультимедийными данными. FFmpeg
является одним из самых популярных и универсальных инструментов для обработки мультимедиа в мире.Для начала использования
FFmpeg
, вы можете установить библиотеку командой pip install ffmpeg-python
. После этого, вы можете создавать собственные скрипты для обработки видео и аудио файлов, определяя нужные операции и параметры. ffmpeg-python
обладает мощными возможностями для конвертации, обрезки, склеивания и многого другого.Исходный код и документация доступны тут
👍9❤2
Красивый вывод таблиц
Недавно нам понадобилось логировать часть базы данных. И тут мы вспомнили про прекрасный модуль
Итак, имена столбцов задается с помощью атрибута
Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод
#трюки #prettytable
Недавно нам понадобилось логировать часть базы данных. И тут мы вспомнили про прекрасный модуль
prettytable
, который позволяет красиво выводить таблицы.Итак, имена столбцов задается с помощью атрибута
table.field_names
. А добавлять строки с данными в таблицу можно методом table.add_row([])
, передавая туда список элементов.Но даже если вы не фанат командной строки, то иногда нужно сохранить отчет о работе вашей программы в текстовый файл. В таком случае можно сохранить саму таблицу, вызвав метод
table.get_string()
.#трюки #prettytable
👍6
16 октября пройдет митап about:cloud — infrastructure
Неформальная встреча для тех, кто каждый день работает с инфраструктурой и сетевыми сервисами.
В программе:
— Управление тысячами выделенных серверов;
— Развитие и устройство NFS;
— Headless в VPC;
— Автоматизация приватных соединений;
— Опыт работы с малыми S3-инсталляциями.
Митап — это не только доклады, но и живое общение со спикерами и коллегами по индустрии.
Формат: офлайн в Москве + онлайн для участников из любых городов
Регистрируйтесь, чтобы первыми узнать об изменениях сервисов от разработчиков Yandex Cloud.
Неформальная встреча для тех, кто каждый день работает с инфраструктурой и сетевыми сервисами.
В программе:
— Управление тысячами выделенных серверов;
— Развитие и устройство NFS;
— Headless в VPC;
— Автоматизация приватных соединений;
— Опыт работы с малыми S3-инсталляциями.
Митап — это не только доклады, но и живое общение со спикерами и коллегами по индустрии.
Формат: офлайн в Москве + онлайн для участников из любых городов
Регистрируйтесь, чтобы первыми узнать об изменениях сервисов от разработчиков Yandex Cloud.
🔥1
Понимание различий между операторами сравнения == и is
Множество разработчиков сталкиваются с трудностями в отличии двух операторов сравнения:
Оператор
В
#python
Множество разработчиков сталкиваются с трудностями в отличии двух операторов сравнения:
==
и is
, что может привести к неожиданным ошибкам в коде.Оператор
==
сравнивает значения двух объектов, чтобы определить их равенство. В отличие от него, оператор is
проверяет, ссылаются ли две переменные на один и тот же объект в памяти, тем самым проверяя их идентичность.В
Python
из соображений эффективности происходит кэширование небольших чисел и коротких строк, что может привести к путанице и неочевидным результатам при использовании этих операторов.#python
😱6👍4👎1
Возврат нескольких значений из функции
Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать. Ознакомьтесь с приведенным выше примером кода.
#python
Знаете ли вы, что можно осуществлять возврат нескольких значений из функции? Вот как это сделать. Ознакомьтесь с приведенным выше примером кода.
#python
👍5❤3
Полезные функции модуля itertools
Модуль
Давайте рассмотрим некоторые полезные функции из этого модуля:
1.
2.
3.
4.
5.
И это далеко не все функции, доступные в модуле
Модуль
itertools
- инструмент в Python
для работы с итерируемыми объектами. Он предоставляет различные функции для создания и манипулирования итераторами, что делает его незаменимым инструментом для разработчиков.Давайте рассмотрим некоторые полезные функции из этого модуля:
1.
itertools.count()
: Эта функция создает бесконечный итератор, который генерирует последовательность чисел, начиная с заданного значения. Это удобно использовать, например, при создании уникальных идентификаторов.2.
itertools.cycle()
: Эта функция создает итератор, который бесконечно повторяет элементы из исходной последовательности. Это может быть полезно, когда вам нужно обрабатывать данные циклически.3.
itertools.islice()
: С помощью этой функции можно получить срез элементов из итератора, подобно срезу для списков. Это позволяет работать с большими итерируемыми объектами без необходимости загрузки их в память целиком.4.
itertools.chain()
: Эта функция объединяет несколько итерируемых объектов в один, что упрощает итерацию по ним как по одному объекту.5.
itertools.groupby()
: Эта функция позволяет группировать элементы итерируемого объекта на основе заданного ключа. Это особенно полезно при анализе и обработке данных.И это далеко не все функции, доступные в модуле
itertools
. Он предоставляет множество возможностей для более эффективной итерации и манипуляции данными.🔥5❤1
Декоратор override
Это может быть полезно для:
— Повышения читабельности кода, так как сразу видно, какие методы переопределены.
— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.
— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.
#python #decorators
@override
используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.Это может быть полезно для:
— Повышения читабельности кода, так как сразу видно, какие методы переопределены.
— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.
— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.
#python #decorators
👍6
Читаем текст с картинки используя Tesseract от Google
Чтобы извлечь текст из изображения, используйте метод
Рекомендуется использовать библиотеку
Пример кода:
#python #pytesseract
Google
разработал систему Tesseract
для извлечения текста из изображений через оптическое распознавание символов.Pytesseract
- это удобная оболочка для системы Tesseract
, облегчающая её использование.Чтобы извлечь текст из изображения, используйте метод
image_to_string
. Для работы с русским текстом укажите аргумент lang
как 'rus'
.Рекомендуется использовать библиотеку
pillow
для открытия изображений, хотя можно также просто указать путь к файлу.Пример кода:
from PIL import Image
import pytesseract
# Открываем изображение с помощью Pillow
image = Image.open('image.jpg')
# Используем pytesseract для извлечения текста
text = pytesseract.image_to_string(image, lang='rus')
print(text)
#python #pytesseract
👍8❤1
Функция reduce
В
Примером работы
#python #functools
В
Python
модуль functools
открывает доступ к функциональным возможностям языка. Одной из замечательных функций в этом модуле является reduce
, которая эффективно уменьшает коллекцию данных, последовательно применяя к ним заданную функцию и сохраняя промежуточные результаты.Примером работы
reduce
может служить последовательное умножение чисел: сначала 1 умножается на 2, затем полученный результат умножается на 3, и так далее.#python #functools
👍5
Валидаторы данных
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
Помимо этого,
#python #validators
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
validators
позволяет использовать уже готовые валидаторы для самых распространенных задач. В примере можете как раз увидеть валидацию почты и ссылок.Помимо этого,
validators
позволяет также работать с ipv4
, ipv6
, mac
адресами и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.#python #validators
👍5❤1