🔥 Что такое
✅ Оптимизирует потребление памяти за счёт отказа от
✅ Ускоряет доступ к атрибутам
✅ Запрещает добавление новых атрибутов, не прописанных в
Пример без
🔹 Минус: каждый объект хранит атрибуты в
Пример с
🔹 Плюсы:
1. Экономия памяти
2. Ускорение доступа к атрибутам
Когда
❌ Если нужно динамически добавлять атрибуты
❌ Если используется
Статья: https://clc.to/QjMXpg
Использовали
Библиотека питониста #буст
__slots__
в Python?__slots__
— это специальный атрибут класса, который:✅ Оптимизирует потребление памяти за счёт отказа от
__dict__
✅ Ускоряет доступ к атрибутам
✅ Запрещает добавление новых атрибутов, не прописанных в
__slots__
Пример без
__slots__
class Point:
def __init__(self, x: float, y: float) -> None:
self.x = x
self.y = y
def __str__(self) -> str:
#
point = Point(1.2, 3.4)
🔹 Минус: каждый объект хранит атрибуты в
__dict__
, что расходует памятьПример с
__slots__
class Point:
__slots__ = ('x', 'y')
def __init__(self, x: float, y: float) -> None:
self.x = x
self.y = y
def __str__(self) -> str:
#
point = Point(1.2, 3.4)
🔹 Плюсы:
1. Экономия памяти
2. Ускорение доступа к атрибутам
Когда
__slots__
НЕ стоит использовать?❌ Если нужно динамически добавлять атрибуты
❌ Если используется
__dict__
Статья: https://clc.to/QjMXpg
Использовали
__slots__
в проектах?Библиотека питониста #буст
👍13😢5❤1🔥1
😶 Алгоритмы или гугл?
С одной стороны, понимание алгоритмов даёт прочную базу и уверенность в коде. С другой — реальная работа часто требует скорости, а гуглить решения уже стало навыком.
А что важнее для junior-разработчика? Делитесь своим мнением и голосуйте! 👇
❤️ — Алгоритмы, без них никуда
🔥 — Гуглить тоже надо уметь
👍 — Главное — чтобы код работал
Библиотека питониста #междусобойчик
С одной стороны, понимание алгоритмов даёт прочную базу и уверенность в коде. С другой — реальная работа часто требует скорости, а гуглить решения уже стало навыком.
А что важнее для junior-разработчика? Делитесь своим мнением и голосуйте! 👇
❤️ — Алгоритмы, без них никуда
🔥 — Гуглить тоже надо уметь
👍 — Главное — чтобы код работал
Библиотека питониста #междусобойчик
🔥76👍53❤24🙏1
🔥 Фишка Groovy: JavaScript-скорость в Python-средах
Каждый разработчик сталкивается с дилеммой: хочется простоты Python и производительности JavaScript на клиенте.
Groovy — транслятор Python в JavaScript, который решает эту задачу:
✅ Пишите функции на привычном Python-синтаксисе.
✅ Запускайте их с JavaScript-скоростью на клиенте.
✅ Ясные сообщения об ошибках, если код не может быть транспилирован.
Транспиляция Python-функций в JS:
Выходной JavaScript-код:
Кто пользуется такими трансляторами? 🙌
Ссылка на проект: https://clc.to/9d1s3w
Библиотека питониста #буст
Каждый разработчик сталкивается с дилеммой: хочется простоты Python и производительности JavaScript на клиенте.
Groovy — транслятор Python в JavaScript, который решает эту задачу:
✅ Пишите функции на привычном Python-синтаксисе.
✅ Запускайте их с JavaScript-скоростью на клиенте.
✅ Ясные сообщения об ошибках, если код не может быть транспилирован.
Транспиляция Python-функций в JS:
from groovy import transpile
def sum_range(n: int):
total = 0
for i in range(n):
total = total + i
return total
js_code = transpile(sum_range)
print(js_code)
Выходной JavaScript-код:
function sum_range(n) {
let total = 0;
for (let i of Array.from({length: n}, (_, i) => i)) {
total = (total + i);
}
return total;
}
Кто пользуется такими трансляторами? 🙌
Ссылка на проект: https://clc.to/9d1s3w
Библиотека питониста #буст
❤7😁2👍1
Отобрали для вас полезные и проверенные каналы для программистов — в них вы найдете все самое интересное, от технических новостей до практических гайдов.
IT Job Hub | Работа и вакансии в IT — избранные IT-вакансии
Библиотека программиста — новости из мира IT и технологий
Книги для программистов — самые годные книги по любым языкам и стекам
IT-мемы — мемы про жизу айтишника
Proglib Academy — обучение и курсы, чтобы стать топовым специалистом
Азбука айтишника — азы из мира разработки
Библиотека нейросетей — лайфхаки и промпты для разных задач, баттлы нейронок и новости из мира ИИ
Библиотека фронтендера — все о JS, React, Angular и не только
Библиотека мобильного разработчика — лайфхаки и новости из мира Swift и Kotlin
Библиотека хакера — уязвимости, атаки, бэкдоры и как от них защититься
Библиотека тестировщика — самое интересное о том, как крашить код
🦫 Go
Библиотека Go-разработчика
Библиотека задач по Go
Библиотека Go для собеса
Вакансии по Go
#️⃣ C#
Библиотека шарписта
Библиотека задач по C#
Библиотека собеса по C#
Вакансии по C#
🔧 DevOps
Библиотека devops’а
Библиотека задач по DevOps
Библиотека собеса по DevOps
Вакансии по DevOps & SRE
🐘 PHP
Библиотека пхпшника
Библиотека задач по PHP
Библиотека PHP для собеса
Вакансии по PHP, Symfony, Laravel
🐍 Python
Библиотека питониста
Библиотека Python для собеса
Библиотека задач по Python
Вакансии по питону, Django, Flask
☕️ Java
Библиотека джависта
Библиотека задач по Java
Библиотека Java для собеса
Вакансии по Java
📊 Data Science
Библиотека дата-сайентиста
Библиотека задач по Data Science
Библиотека Data Science для собеса
Вакансии по Data Science
🎮 C++
Библиотека C/C++ разработчика
Библиотека задач по C++
Библиотека C++ для собеса
Вакансии по C++
Подписывайтесь на интересные вам каналы и сохраняйте пост в закладки, чтобы не потерять 🔑
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🤩1
🚀 Мартовский релиз: Python, Pylance и Jupyter для VS Code
Вышло мощное обновление VS Code, которое сделает работу с Python еще удобнее.
Что внутри обновления:
• Улучшенная интеграция с Python shell.
• Новый параметр для автопоиска тестов по шаблону.
• Отображение значений переменных при наведении в Notebooks и Python-файлах.
• Автоматическая вставка кавычек при разбиении длинных строк.
Еще больше о релизе: https://clc.to/v0tvdg
Библиотека питониста #свежак
Вышло мощное обновление VS Code, которое сделает работу с Python еще удобнее.
Что внутри обновления:
• Улучшенная интеграция с Python shell.
• Новый параметр для автопоиска тестов по шаблону.
• Отображение значений переменных при наведении в Notebooks и Python-файлах.
• Автоматическая вставка кавычек при разбиении длинных строк.
Еще больше о релизе: https://clc.to/v0tvdg
Библиотека питониста #свежак
👍6❤3🔥1
Типичный рабочий процесс в IT-команде.
• Джуниоры — тащат проект изо всех сил.
• Сеньор — наблюдает, готов вмешаться.
• Скрам-мастер — стратегически управляет... ложкой в йогурте.
Кто узнаёт свою команду?
👍 — один в один, по другому и быть не может.
❤️ — у нас ещё PM где-то в углу с Jira стоит.
😆 — ещё не хватало тимлида, который всё переделает.
Библиотека питониста #развлекалово
• Джуниоры — тащат проект изо всех сил.
• Сеньор — наблюдает, готов вмешаться.
• Скрам-мастер — стратегически управляет... ложкой в йогурте.
Кто узнаёт свою команду?
👍 — один в один, по другому и быть не может.
❤️ — у нас ещё PM где-то в углу с Jira стоит.
😆 — ещё не хватало тимлида, который всё переделает.
Библиотека питониста #развлекалово
👍13😁9❤6💯1
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
Сегодня отмечаем вклад девушек-разработчиков, аналитиков, тестировщиков, тимлидов и всех, кто влюблён в код. Без вас IT не было бы таким, каким мы его знаем. С праздником, коллеги 💐
Женщины оставили огромный след в истории IT. Если вам кажется, что программирование — это исключительно «мужская территория», взгляните, вот лишь несколько легендарных женщин:
🔹 Ада Лавлейс — автор первой компьютерной программы ещё в 19 веке.
🔹 Грейс Хоппер — создала первый компилятор и популяризировала термин «баг».
🔹 Барбара Лисков — её принцип Liskov Substitution является основой ООП, в том числе в Java.
🔹 Эдит Кларк — первая женщина-инженер, внесшая вклад в вычислительные методы в энергетике.
🔹 Маргарет Гамильтон — разработала софт для посадки «Аполлона-11» на Луну.
А это только малая часть. В статье собраны ещё больше вдохновляющих историй.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🎉4👍2❤🔥1🔥1
Самые догадливые, пишите ответ в комментах 👇
🔍 Update с небольшой подсказкой — это термин, относящийся к языку Python. Он может обозначать концепцию, структуру данных, технологию или инструмент, используемый в программировании.
Библиотека питониста #междусобойчик
🔍 Update с небольшой подсказкой — это термин, относящийся к языку Python. Он может обозначать концепцию, структуру данных, технологию или инструмент, используемый в программировании.
Библиотека питониста #междусобойчик
🤔4❤2👍2
📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих»
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
Мы написали и собрали для вас в одну подборку все 25 глав и 230 практических заданий!
🐍 Часть 1: Особенности, сферы применения, установка, онлайн IDE
🐍 Часть 2: Все, что нужно для изучения Python с нуля – книги, сайты, каналы и курсы
🐍 Часть 3: Типы данных: преобразование и базовые операции
🐍 Часть 4: Методы работы со строками
🐍 Часть 5: Методы работы со списками и списковыми включениями
🐍 Часть 6: Методы работы со словарями и генераторами словарей
🐍 Часть 7: Методы работы с кортежами
🐍 Часть 8: Методы работы со множествами
🐍 Часть 9: Особенности цикла for
🐍 Часть 10: Условный цикл while
🐍 Часть 11: Функции с позиционными и именованными аргументами
🐍 Часть 12: Анонимные функции
🐍 Часть 13: Рекурсивные функции
🐍 Часть 14: Функции высшего порядка, замыкания и декораторы
🐍 Часть 15: Методы работы с файлами и файловой системой
🐍 Часть 16: Регулярные выражения
🐍 Часть 17: Основы скрапинга и парсинга
🐍 Часть 18: Основы ООП – инкапсуляция и наследование
🐍 Часть 19: Основы ООП – абстракция и полиморфизм
🐍 Часть 20: Графический интерфейс на Tkinter
🐍 Часть 21: Основы разработки игр на Pygame
🐍 Часть 22: Основы работы с SQLite
🐍 Часть 23: Основы веб-разработки на Flask
🐍 Часть 24: Основы работы с NumPy
🐍 Часть 25: Основы анализа данных с Pandas
❤15👍5
🐍 Новости недели
▪️ Brushshe 1.2.0 — обновление растрового графического редактора на Python для Windows 10/11.
▪️ Мартовский релиз VS Code — обновления для Python, Pylance и Jupyter.
▪️ Критические патчи безопасности Django — исправления уязвимостей в версиях 5.1.7, 5.0.13 и 4.2.20.
▪️ My 2025 uv-based Python Project Layout — разбор оптимальной структуры FastAPI-проекта с uv.
▪️ Design of Everyday APIs — как создавать удобные и интуитивно понятные API в Python.
▪️ Flask-SQLAlchemy — введение в расширение для управления базами данных во Flask.
▪️ Pydoll — новая библиотека для автоматизации браузера Chromium без WebDriver.
▪️ Релиз Python-oracledb 3.0 — поддержка DataFrame, Oracle AQ и SPARSE векторов.
Что вам показалось самым интересным? Или, может, мы что-то упустили? Делитесь в комментариях!
Библиотека питониста #свежак
▪️ Brushshe 1.2.0 — обновление растрового графического редактора на Python для Windows 10/11.
▪️ Мартовский релиз VS Code — обновления для Python, Pylance и Jupyter.
▪️ Критические патчи безопасности Django — исправления уязвимостей в версиях 5.1.7, 5.0.13 и 4.2.20.
▪️ My 2025 uv-based Python Project Layout — разбор оптимальной структуры FastAPI-проекта с uv.
▪️ Design of Everyday APIs — как создавать удобные и интуитивно понятные API в Python.
▪️ Flask-SQLAlchemy — введение в расширение для управления базами данных во Flask.
▪️ Pydoll — новая библиотека для автоматизации браузера Chromium без WebDriver.
▪️ Релиз Python-oracledb 3.0 — поддержка DataFrame, Oracle AQ и SPARSE векторов.
Что вам показалось самым интересным? Или, может, мы что-то упустили? Делитесь в комментариях!
Библиотека питониста #свежак
❤3👍2🤩1
Forwarded from Библиотека собеса по Python | вопросы с собеседований
Как соединить два списка в список кортежей?
Для создания списка кортежей можно воспользоваться функцией zip. Она позволяет объединять не только два, но и три или более списков.
❤9👍4🥱2
🎨 Kivy vs Flet — что выбрать для GUI в Python?
Наши подписчики обсуждали, какой инструмент лучше для создания интерфейсов на Python: Kivy или Flet. Давайте разберёмся!
🔹 Kivy — это мощный фреймворк для создания нативных кроссплатформенных приложений. Работает на Windows, macOS, Linux, Android, iOS и даже Raspberry Pi. Поддерживает OpenGL для ускоренной графики, но требует сложной настройки.
🔹 Flet — это фреймворк для быстрой разработки UI на Python с использованием Flutter. Интерфейсы выглядят современно, а приложения легко развертывать в вебе, на десктопе и мобильных устройствах.
❓ Использовали ли вы Kivy или Flet? И как думаете, Python может быть хорош для фронтенда?
Библиотека питониста #междусобойчик
Наши подписчики обсуждали, какой инструмент лучше для создания интерфейсов на Python: Kivy или Flet. Давайте разберёмся!
🔹 Kivy — это мощный фреймворк для создания нативных кроссплатформенных приложений. Работает на Windows, macOS, Linux, Android, iOS и даже Raspberry Pi. Поддерживает OpenGL для ускоренной графики, но требует сложной настройки.
🔹 Flet — это фреймворк для быстрой разработки UI на Python с использованием Flutter. Интерфейсы выглядят современно, а приложения легко развертывать в вебе, на десктопе и мобильных устройствах.
❓ Использовали ли вы Kivy или Flet? И как думаете, Python может быть хорош для фронтенда?
Библиотека питониста #междусобойчик
👍12🌚4❤1🔥1
😱 Обманули с производительностью интерпретатора Python 3.14?
В прошлом месяце команда CPython представила новый интерпретатор с оптимизацией хвостовых вызовов (tail calls), который обещал улучшение производительности на 10-15%.
Однако, как выяснилось, это улучшение было связано с ошибкой в бенчмарках, вызванной регрессией в LLVM 19. При корректных настройках прирост производительности снизился до 1-5%.
Автор статьи проводил тщательные тесты и анализ, чтобы понять причины таких результатов. Несмотря на это, он всё еще считает новый интерпретатор хорошей разработкой, хотя и с меньшим улучшением производительности, чем ожидалось.
Библиотека питониста #свежак
В прошлом месяце команда CPython представила новый интерпретатор с оптимизацией хвостовых вызовов (tail calls), который обещал улучшение производительности на 10-15%.
Однако, как выяснилось, это улучшение было связано с ошибкой в бенчмарках, вызванной регрессией в LLVM 19. При корректных настройках прирост производительности снизился до 1-5%.
Автор статьи проводил тщательные тесты и анализ, чтобы понять причины таких результатов. Несмотря на это, он всё еще считает новый интерпретатор хорошей разработкой, хотя и с меньшим улучшением производительности, чем ожидалось.
Библиотека питониста #свежак
😁9❤5👍5🔥1
How to: как создать самоссылочную связь через внешний ключ?
Представьте, что вы создаете систему управления сотрудниками в Django. Вам нужно хранить информацию о сотрудниках, и вдруг вы понимаете, что у них есть отношения между собой. Например, у каждого сотрудника есть свой «линейный менеджер» и могут быть «подчиненные».
👨💻 Решение: используйте самоссылочный внешний ключ.
Как это работает:
• Моделируем связь с «линейным менеджером» как внешний ключ, указывая на самого себя (используем
• Используем поле
• Обратную связь можно легко получить с помощью поля
👍 Это решение идеально подходит для простых и неограниченно длинных иерархий, как, например, отношения между менеджерами и подчиненными.
👎 Самоссылочные связи могут быть проблемой, если отношения более сложные или имеют заранее заданные уровни.
Библиотека питониста #буст
Представьте, что вы создаете систему управления сотрудниками в Django. Вам нужно хранить информацию о сотрудниках, и вдруг вы понимаете, что у них есть отношения между собой. Например, у каждого сотрудника есть свой «линейный менеджер» и могут быть «подчиненные».
👨💻 Решение: используйте самоссылочный внешний ключ.
Как это работает:
• Моделируем связь с «линейным менеджером» как внешний ключ, указывая на самого себя (используем
self
).• Используем поле
line_manager
, чтобы задать связь «многие к одному» (снизу вверх).• Обратную связь можно легко получить с помощью поля
direct_reports
, которое позволяет найти всех сотрудников, которых управляет данный сотрудник.👍 Это решение идеально подходит для простых и неограниченно длинных иерархий, как, например, отношения между менеджерами и подчиненными.
👎 Самоссылочные связи могут быть проблемой, если отношения более сложные или имеют заранее заданные уровни.
Библиотека питониста #буст
❤4👍1🔥1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
📊💼 Ситуация на рынке труда в IT в 2025 году: результаты опроса айтишников
Помните мы проводили опрос про рабочие моменты? Пришло время делиться результатами!
В нашем исследовании приняли участие более 1000 IT-специалистов различных направлений. Работа или личная жизнь? Удалёнка или офис? Заменил ли всех ИИ?
➡️ Ответы в подробном отчёте
А какие изменения на IT-рынке замечаете вы? Делитесь в комментариях! 👇
🐸 Библиотека devops'a
Помните мы проводили опрос про рабочие моменты? Пришло время делиться результатами!
В нашем исследовании приняли участие более 1000 IT-специалистов различных направлений. Работа или личная жизнь? Удалёнка или офис? Заменил ли всех ИИ?
А какие изменения на IT-рынке замечаете вы? Делитесь в комментариях! 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🤔1
📝 Структуры данных: ТОП-30 вопросов и ответов для собеседований в 2025 году
Техническое собеседование на позицию разработчика, дата-сайентиста и ML-инженера часто включает вопросы по структурам данных и связанным с ними алгоритмами.
В нашей статье мы рассмотрим базовые и продвинутые темы, разберем типичные задачи и обсудим оптимальные способы их решения.
📄 Прочитайте статью и укрепите свои знания — https://proglib.io/sh/1uYAygzIxr
Библиотека питониста
Техническое собеседование на позицию разработчика, дата-сайентиста и ML-инженера часто включает вопросы по структурам данных и связанным с ними алгоритмами.
В нашей статье мы рассмотрим базовые и продвинутые темы, разберем типичные задачи и обсудим оптимальные способы их решения.
📄 Прочитайте статью и укрепите свои знания — https://proglib.io/sh/1uYAygzIxr
Библиотека питониста
❤5👍3😁1
Команда дня: сравнение объектов с помощью __eq__
В Python, когда вы используете оператор
❌ Поведение по умолчанию:
Без переопределения ‘__eq__’, Python сравнивает объекты на основе их ссылок в памяти. То есть, два объекта будут считаться равными только в том случае, если они являются одним и тем же объектом.
Пример:
Здесь, несмотря на то, что у объектов
✅ С методом ‘__eq__’ (пользовательское сравнение):
Чтобы изменить поведение сравнения объектов, вы можете переопределить метод ‘__eq__’ в вашем классе. Этот метод будет определять, что именно считать равенством для объектов вашего класса.
Пример:
В этом примере мы определяем, что объекты считаются равными, если их атрибуты
Библиотека питониста #буст
В Python, когда вы используете оператор
==
для сравнения объектов, по умолчанию проверяется, ссылаются ли объекты на один и тот же экземпляр в памяти. Однако, если вы хотите настроить, как должны сравниваться объекты вашего класса, вам нужно переопределить метод ‘__eq__’.❌ Поведение по умолчанию:
Без переопределения ‘__eq__’, Python сравнивает объекты на основе их ссылок в памяти. То есть, два объекта будут считаться равными только в том случае, если они являются одним и тем же объектом.
Пример:
class MyClass:
def __init__(self, value):
self.value = value
a, b = MyClass(1), MyClass(1)
print(a == b) # False
Здесь, несмотря на то, что у объектов
a
и b
одинаковые значения атрибутов, они считаются неравными, так как это разные экземпляры класса.✅ С методом ‘__eq__’ (пользовательское сравнение):
Чтобы изменить поведение сравнения объектов, вы можете переопределить метод ‘__eq__’ в вашем классе. Этот метод будет определять, что именно считать равенством для объектов вашего класса.
Пример:
class MyClass:
def __init__(self, value):
self.value = value
def __eq__(self, other):
if isinstance(other, MyClass):
return self.value == other.value
return False
a, b = MyClass(1), MyClass(1)
print(a == b) # True
В этом примере мы определяем, что объекты считаются равными, если их атрибуты
value
одинаковы. Теперь вывод будет True
, так как у a
и b
одинаковые значения.Библиотека питониста #буст
👍16🔥2❤1
Чек-лист: 5 приемов ускорения Python
👍 JIT-компиляция с Numba:
Numba — это JIT-компилятор, который переводит код Python в быстрый машинный код. Добавив декоратор
Пример:
Результат: прирост производительности до 10-30 раз.
👍 Многозадачность:
Python ограничивает многозадачность из-за GIL, но для вычислительно сложных задач можно использовать многопроцессорность, чтобы обойти это ограничение.
Пример:
👍 Cython и PyPy:
Cython компилирует Python в C, что ускоряет выполнение кода. PyPy — это JIT-компилятор, который улучшает производительность без изменения кода.
Пример: С использованием Cython можно ускорить код, написав его в файле
👍 Правильные структуры данных:
Используйте более эффективные структуры данных, такие как массивы NumPy, вместо списков Python для числовых вычислений. Это ускоряет выполнение и экономит память.
Пример:
Векторизация операций с NumPy может быть в 50 раз быстрее.
👍 Инструменты профилирования:
Профилирование помогает понять, какие части кода нуждаются в оптимизации. Используйте cProfile и line_profiler для анализа производительности.
Пример:
Это поможет найти узкие места и ускорить работу.
Библиотека питониста #буст
👍 JIT-компиляция с Numba:
Numba — это JIT-компилятор, который переводит код Python в быстрый машинный код. Добавив декоратор
@jit
, вы можете ускорить вычисления в циклах и операциях с массивами.Пример:
from numba import jit
import numpy as np
import time
@jit(nopython=True)
def sum_squares(arr):
total = 0
for i in range(arr.shape[0]):
total += arr[i] * arr[i]
return total
data = np.arange(1000000)
start = time.time()
result = sum_squares(data)
end = time.time()
print("Numba JIT:", result, "Time:", end - start)
Результат: прирост производительности до 10-30 раз.
👍 Многозадачность:
Python ограничивает многозадачность из-за GIL, но для вычислительно сложных задач можно использовать многопроцессорность, чтобы обойти это ограничение.
Пример:
import multiprocessing as mp
def process_image(image):
return image ** 2
if __name__ == '__main__':
images = range(20)
with mp.Pool(mp.cpu_count()) as pool:
results = pool.map(process_image, images)
print(results)
👍 Cython и PyPy:
Cython компилирует Python в C, что ускоряет выполнение кода. PyPy — это JIT-компилятор, который улучшает производительность без изменения кода.
Пример: С использованием Cython можно ускорить код, написав его в файле
.pyx
, а с PyPy просто сменив интерпретатор.👍 Правильные структуры данных:
Используйте более эффективные структуры данных, такие как массивы NumPy, вместо списков Python для числовых вычислений. Это ускоряет выполнение и экономит память.
Пример:
import numpy as np
data = np.arange(1000000)
result = data * 2
Векторизация операций с NumPy может быть в 50 раз быстрее.
👍 Инструменты профилирования:
Профилирование помогает понять, какие части кода нуждаются в оптимизации. Используйте cProfile и line_profiler для анализа производительности.
Пример:
import cProfile
def heavy_computation():
return sum([i * i for i in range(1000000)])
cProfile.run('heavy_computation()')
Это поможет найти узкие места и ускорить работу.
Библиотека питониста #буст
👍21❤3🔥3
🔥 Делимся Python-репозиториями
Давайте обсудим самые интересные и полезные Python-репозитории!
✔️ Какие репозитории вы используете чаще всего?
✔️ Какие проекты вас впечатлили, но пока не получили широкой известности?
✔️ Какой Python-репозиторий можно поковырять для удовольствия?
Библиотека питониста #междусобойчик
Давайте обсудим самые интересные и полезные Python-репозитории!
✔️ Какие репозитории вы используете чаще всего?
✔️ Какие проекты вас впечатлили, но пока не получили широкой известности?
✔️ Какой Python-репозиторий можно поковырять для удовольствия?
Библиотека питониста #междусобойчик
❤5👍2🔥1