Профилирование Python — почему и где тормозит ваш код
Представьте ситуацию: вы написали скрипт для обработки каких-то данных на ноутбуке, ушли попить кофе, а когда пятнадцать минут спустя вернулись, завершилось едва ли 10%.
Почему скрипт работает так медленно? Какая его часть тормозит? Дело в чтении данных, их обработке или сохранении? Как ускорить исполнение? Действительно ли скрипт вообще медленный?
Ответить на все эти вопросы поможет инструмент под названием «профилировщик» (profiler).
Rus https://habr.com/ru/companies/ruvds/articles/757336/
Eng https://betterprogramming.pub/python-profiling-why-and-where-your-code-is-slow-d6f41601dba8
👉 @bookflow
Представьте ситуацию: вы написали скрипт для обработки каких-то данных на ноутбуке, ушли попить кофе, а когда пятнадцать минут спустя вернулись, завершилось едва ли 10%.
Почему скрипт работает так медленно? Какая его часть тормозит? Дело в чтении данных, их обработке или сохранении? Как ускорить исполнение? Действительно ли скрипт вообще медленный?
Ответить на все эти вопросы поможет инструмент под названием «профилировщик» (profiler).
Rus https://habr.com/ru/companies/ruvds/articles/757336/
Eng https://betterprogramming.pub/python-profiling-why-and-where-your-code-is-slow-d6f41601dba8
👉 @bookflow
👍2
В Linux Logical Volume Manager (LVM) - это система управления хранением данных, которая обеспечивает более гибкий подход к управлению дисковым хранилищем, чем традиционное разбиение на разделы. LVM работает за счет создания уровня абстракции между физическими устройствами хранения и файловой системой, позволяя создавать логические тома, которые могут охватывать несколько физических дисков.
С помощью LVM вы можете создавать группы томов из одного или нескольких физических дисков, а затем создавать логические тома в этих группах томов. Логические тома ведут себя как традиционные разделы диска, но у них есть несколько преимуществ:
- Размер логических томов можно динамически изменять в режиме онлайн, без необходимости размонтирования файловых систем или перезагрузки системы. Такая гибкость позволяет адаптироваться к меняющимся потребностям в хранении данных без простоев.
- Логические тома можно легко расширить, добавив в группу томов дополнительные физические диски. Такая масштабируемость позволяет увеличивать объем хранилища без ущерба для существующих данных.
- LVM предоставляет такие возможности, как моментальные снимки, которые позволяют создавать копии логических томов «точка-в-время» для целей резервного копирования или тестирования.
Чтобы проиллюстрировать важность LVM, рассмотрим сценарий, в котором у вас есть сервер Linux с двумя физическими дисками, и вы хотите создать логический том для данных вашего веб-сервера. Изначально вы создаете логический том, охватывающий оба диска, обеспечивая большую емкость хранения, чем может предоставить один диск. Позже, по мере роста объема данных веб-сервера, вы сможете добавить третий диск в группу томов и расширить логический том, включив в него этот новый диск, увеличив его размер без простоев.
👉 @bookflow
С помощью LVM вы можете создавать группы томов из одного или нескольких физических дисков, а затем создавать логические тома в этих группах томов. Логические тома ведут себя как традиционные разделы диска, но у них есть несколько преимуществ:
- Размер логических томов можно динамически изменять в режиме онлайн, без необходимости размонтирования файловых систем или перезагрузки системы. Такая гибкость позволяет адаптироваться к меняющимся потребностям в хранении данных без простоев.
- Логические тома можно легко расширить, добавив в группу томов дополнительные физические диски. Такая масштабируемость позволяет увеличивать объем хранилища без ущерба для существующих данных.
- LVM предоставляет такие возможности, как моментальные снимки, которые позволяют создавать копии логических томов «точка-в-время» для целей резервного копирования или тестирования.
Чтобы проиллюстрировать важность LVM, рассмотрим сценарий, в котором у вас есть сервер Linux с двумя физическими дисками, и вы хотите создать логический том для данных вашего веб-сервера. Изначально вы создаете логический том, охватывающий оба диска, обеспечивая большую емкость хранения, чем может предоставить один диск. Позже, по мере роста объема данных веб-сервера, вы сможете добавить третий диск в группу томов и расширить логический том, включив в него этот новый диск, увеличив его размер без простоев.
👉 @bookflow
👍2
❓Как долго может работать ваше приложение на PHP?
Чувствуете ограниченность PHP в долгосрочной перспективе?
9 июля в 20:00 мск узнайте, как ваш PHP-код может работать дольше простого HTTP-запроса, обрабатывая данные для интеграции с партнерами или реагируя на события системы в реальном времени.
🔮На вебинаре вы узнаете:
- какие классы задач могут решать долгоживущие приложения на PHP;
- какие инструменты и средства доступны для реализации этих задач;
- как правильно организовать работу приложений на PHP, чтобы избежать проблем с памятью;
- когда стоит рассматривать расширение стека и использовать другие языки программирования.
Спикер Александр Пряхин — технический руководитель юнита в Авито и опытный преподаватель.
🎁Регистрируйтесь на урок и получите подарок участника чек-лист «SOLID и типичные ошибки на собеседованиях»: https://vk.cc/cyeeU2
Чувствуете ограниченность PHP в долгосрочной перспективе?
9 июля в 20:00 мск узнайте, как ваш PHP-код может работать дольше простого HTTP-запроса, обрабатывая данные для интеграции с партнерами или реагируя на события системы в реальном времени.
🔮На вебинаре вы узнаете:
- какие классы задач могут решать долгоживущие приложения на PHP;
- какие инструменты и средства доступны для реализации этих задач;
- как правильно организовать работу приложений на PHP, чтобы избежать проблем с памятью;
- когда стоит рассматривать расширение стека и использовать другие языки программирования.
Спикер Александр Пряхин — технический руководитель юнита в Авито и опытный преподаватель.
🎁Регистрируйтесь на урок и получите подарок участника чек-лист «SOLID и типичные ошибки на собеседованиях»: https://vk.cc/cyeeU2
👍1
Многообразие связных списков
Связный список — классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структуры данных и, надеюсь, вместе узнаем что-то новое. Краем глаза увидим возможные применения связных списков. И в конце, для любителей C++, бонус: использование связного списка для сбора диагностики использования динамической памяти в вашем коде.
https://habr.com/ru/articles/814955/
👉 @bookflow
Связный список — классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структуры данных и, надеюсь, вместе узнаем что-то новое. Краем глаза увидим возможные применения связных списков. И в конце, для любителей C++, бонус: использование связного списка для сбора диагностики использования динамической памяти в вашем коде.
https://habr.com/ru/articles/814955/
👉 @bookflow
🥰2👍1
Media is too big
VIEW IN TELEGRAM
Эффективное использование памяти во встраиваемых системах
Алексей Алешкин (ИнфоТеКС)
Отличительная особенность разработки ПО для встраиваемых систем — ограниченность доступной памяти. Применение С++ значительно повышает скорость разработки, однако ухудшает прозрачность управления памятью и нефункциональные характеристики кода. Эти побочные эффекты зачастую приводят к понижению потребительских качеств продукта, ухудшению стабильности его работы или даже к невозможности реализации проекта на заданной платформе.
В процессе разработки проекта SIES Core команда Алексея столкнулась со всеми перечисленными побочными эффектами, что потребовало глубоких долгих исследований, результатами которых он поделился с аудиторией.
Доклад будет интересен разработчикам backend и embedded, создающим ПО с использованием С++ на недорогих платформах с ограниченным объемом памяти и отсутствием MMU.
Технологии: аллокаторы, MMU, Semihosting FS, GCC, GDB, OpenOCD.
источник
👉 @bookflow
Алексей Алешкин (ИнфоТеКС)
Отличительная особенность разработки ПО для встраиваемых систем — ограниченность доступной памяти. Применение С++ значительно повышает скорость разработки, однако ухудшает прозрачность управления памятью и нефункциональные характеристики кода. Эти побочные эффекты зачастую приводят к понижению потребительских качеств продукта, ухудшению стабильности его работы или даже к невозможности реализации проекта на заданной платформе.
В процессе разработки проекта SIES Core команда Алексея столкнулась со всеми перечисленными побочными эффектами, что потребовало глубоких долгих исследований, результатами которых он поделился с аудиторией.
Доклад будет интересен разработчикам backend и embedded, создающим ПО с использованием С++ на недорогих платформах с ограниченным объемом памяти и отсутствием MMU.
Технологии: аллокаторы, MMU, Semihosting FS, GCC, GDB, OpenOCD.
источник
👉 @bookflow
👍3
Реверс-инжиниринг умных часов
Недавно в моём распоряжении оказалась партия умных часов с поддержкой геолокации, которые после тестирования были отправлены в резерв. Мне было поручено найти применение для этих девайсов, с чего и началась история их реверс-инжиниринга, о которой я поведаю в этой статье.
Начну я с рассмотрения их внешних особенностей и схемы, после чего подробно расскажу о том, как перепрограммировал эти часы, в том числе пропатчив их под иные задачи.
https://habr.com/ru/companies/ruvds/articles/827958/
👉 @bookflow
Недавно в моём распоряжении оказалась партия умных часов с поддержкой геолокации, которые после тестирования были отправлены в резерв. Мне было поручено найти применение для этих девайсов, с чего и началась история их реверс-инжиниринга, о которой я поведаю в этой статье.
Начну я с рассмотрения их внешних особенностей и схемы, после чего подробно расскажу о том, как перепрограммировал эти часы, в том числе пропатчив их под иные задачи.
https://habr.com/ru/companies/ruvds/articles/827958/
👉 @bookflow
👍3
Как работает Docker?
Архитектура Docker состоит из трех основных компонентов:
🔹 Docker Client
Это интерфейс, через который взаимодействуют пользователи. Он взаимодействует с Docker daemon.
🔹 Docker Host
Здесь Docker daemon принимает запросы Docker API и управляет различными объектами Docker, включая образы, контейнеры, сети и тома.
🔹 Docker Registry
Здесь хранятся образы Docker. Docker Hub, например, является широко используемым public registry.
👉 @bookflow
Архитектура Docker состоит из трех основных компонентов:
🔹 Docker Client
Это интерфейс, через который взаимодействуют пользователи. Он взаимодействует с Docker daemon.
🔹 Docker Host
Здесь Docker daemon принимает запросы Docker API и управляет различными объектами Docker, включая образы, контейнеры, сети и тома.
🔹 Docker Registry
Здесь хранятся образы Docker. Docker Hub, например, является широко используемым public registry.
👉 @bookflow
👍5
Использование брокера сообщений Apache Kafka в распределенных очередях
24 июля в 20:00 мск
❓Хотите узнать, как эффективно управлять сообщениями в масштабируемых распределенных системах? Тогда этот открытый вебинар для вас!
Мы разберем основы и архитектуру Apache Kafka, принципы работы с распределенными очередями, а также научимся настраивать и развертывать кластер Kafka в Docker. Вы увидите реальные примеры использования Kafka для обмена сообщениями между сервисами и узнаете о лучших практиках и рекомендациях по интеграции Kafka в ваши проекты.
💻 Урок будет полезен Fullstack и Backend-разработчикам, DevOps-инженерам, архитекторам ПО и администраторам систем, а также всем, кто хочет углубить свои знания об Apache Kafka и его применении.
🔴 Регистрация открыта: https://vk.cc/cyu2Qp
24 июля в 20:00 мск
❓Хотите узнать, как эффективно управлять сообщениями в масштабируемых распределенных системах? Тогда этот открытый вебинар для вас!
Мы разберем основы и архитектуру Apache Kafka, принципы работы с распределенными очередями, а также научимся настраивать и развертывать кластер Kafka в Docker. Вы увидите реальные примеры использования Kafka для обмена сообщениями между сервисами и узнаете о лучших практиках и рекомендациях по интеграции Kafka в ваши проекты.
💻 Урок будет полезен Fullstack и Backend-разработчикам, DevOps-инженерам, архитекторам ПО и администраторам систем, а также всем, кто хочет углубить свои знания об Apache Kafka и его применении.
🔴 Регистрация открыта: https://vk.cc/cyu2Qp
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576👍1
Media is too big
VIEW IN TELEGRAM
Сеть и сокеты. База для backend разработчика.
Поговорим про базовые понятия, связанные с сетью. Сокеты, что это такое и как с ними подружиться. Базовые протоколы TCP / UDP и чем они отличаются. Прикладные протоколы HTTP/SMTP/POP3/IMAP/FTP/SSH/SFTP и другие. Коснемся пулов соединений и таймаутов. Всё что необходимо понимать backend разработчику и еще немного!
Тайм коды:
00:00 Интро
00:15 Сокеты
02:20 Протоколы
04:00 TCP и UDP
05:24 Прикладные протоколы
07:50 Пулы соединений
10:58 Таймауты
12:48 Безопасность
16:00 Итог
источник
👉 @bookflow
Поговорим про базовые понятия, связанные с сетью. Сокеты, что это такое и как с ними подружиться. Базовые протоколы TCP / UDP и чем они отличаются. Прикладные протоколы HTTP/SMTP/POP3/IMAP/FTP/SSH/SFTP и другие. Коснемся пулов соединений и таймаутов. Всё что необходимо понимать backend разработчику и еще немного!
Тайм коды:
00:00 Интро
00:15 Сокеты
02:20 Протоколы
04:00 TCP и UDP
05:24 Прикладные протоколы
07:50 Пулы соединений
10:58 Таймауты
12:48 Безопасность
16:00 Итог
источник
👉 @bookflow
👍6
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥1