Управление производительностью с Python 3.12
В Python 3.12 появилась поддержка perf profiling. В этой статье увидим, как это помогает сократить время выполнения Python-скрипта с 36 секунд до 0,8. Мы рассмотрим Linux-инструмент perf, графики Flame Graph, посмотрим на дизассемблированный код и займемся поиском ошибок. Код из статьи можно посмотреть здесь.
https://www.petermcconnell.com/posts/perf_eng_with_py12/
@BookPython
В Python 3.12 появилась поддержка perf profiling. В этой статье увидим, как это помогает сократить время выполнения Python-скрипта с 36 секунд до 0,8. Мы рассмотрим Linux-инструмент perf, графики Flame Graph, посмотрим на дизассемблированный код и займемся поиском ошибок. Код из статьи можно посмотреть здесь.
https://www.petermcconnell.com/posts/perf_eng_with_py12/
@BookPython
👍9🔥4
Привязки Python для оптимизации производительности
В статье описываются методы ускорения кодовой базы Python путем раскрытия распараллеленных функций C++ с помощью PyBind. Затем анализируются результаты оптимизации, в ходе которой распараллеливание одной 40-строчной функции в 700-строчной программе дало до 3-кратного сквозного ускорения.
https://alexhagiopol.github.io/posts/2023/01/python-bindings/
@BookPython
В статье описываются методы ускорения кодовой базы Python путем раскрытия распараллеленных функций C++ с помощью PyBind. Затем анализируются результаты оптимизации, в ходе которой распараллеливание одной 40-строчной функции в 700-строчной программе дало до 3-кратного сквозного ускорения.
https://alexhagiopol.github.io/posts/2023/01/python-bindings/
@BookPython
👍8
Линейная алгебра в Python: обратные матрицы и метод наименьших квадратов.
Линейная алгебра является важной темой для различных предметов. Она позволяет решать задачи, связанные с векторами, матрицами и линейными уравнениями. В Python большинство процедур, связанных с этой темой, реализовано в scipy.linalg, который предоставляет очень быстрые возможности линейной алгебры.
В частности, линейные модели играют важную роль в различных реальных задачах, и scipy.linalg предоставляет инструменты для их эффективного вычисления.
https://realpython.com/python-linear-algebra/
@BookPython
Линейная алгебра является важной темой для различных предметов. Она позволяет решать задачи, связанные с векторами, матрицами и линейными уравнениями. В Python большинство процедур, связанных с этой темой, реализовано в scipy.linalg, который предоставляет очень быстрые возможности линейной алгебры.
В частности, линейные модели играют важную роль в различных реальных задачах, и scipy.linalg предоставляет инструменты для их эффективного вычисления.
https://realpython.com/python-linear-algebra/
@BookPython
👍5
Список вопросов с собеседований по Python
https://bookflow.ru/spisok-voprosov-s-sobesedovanij-po-python/
@BookPython
https://bookflow.ru/spisok-voprosov-s-sobesedovanij-po-python/
@BookPython
👍9
5 лайфхаков Python, которые сделают ваш код более читабельным и элегантным
В этой статье я продемонстрирую 5 трюков Python на понятных для новичков примерах, которые помогут вам писать более элегантный Python код в вашей повседневной работе.
1. Избегайте вложенных циклов с помощью product
2. Оператор морж (:=) или способ записывать данные в переменную о котором вы не знали
3. Самый легкий способ мерджить словари
4. Используем * для мерджа списка, кортежа и множества в одну строчку
5. Используем встроенные функции в Python для написания стандартной логики
Rus https://habr.com/ru/articles/714820/
Eng https://medium.com/techtofreedom/9-fabulous-python-tricks-that-make-your-code-more-elegant-bf01a6294908
@BookPython
В этой статье я продемонстрирую 5 трюков Python на понятных для новичков примерах, которые помогут вам писать более элегантный Python код в вашей повседневной работе.
1. Избегайте вложенных циклов с помощью product
2. Оператор морж (:=) или способ записывать данные в переменную о котором вы не знали
3. Самый легкий способ мерджить словари
4. Используем * для мерджа списка, кортежа и множества в одну строчку
5. Используем встроенные функции в Python для написания стандартной логики
Rus https://habr.com/ru/articles/714820/
Eng https://medium.com/techtofreedom/9-fabulous-python-tricks-that-make-your-code-more-elegant-bf01a6294908
@BookPython
👍5
Подборка CMS
django-cms - Корпоративная CMS с открытым исходным кодом на основе Django.
feincms - Одна из самых продвинутых систем управления контентом, построенная на Django.
indico - Многофункциональная система управления событиями, созданная в CERN.
Kotti - Высокоуровневый питонический фреймворк для веб-приложений, построенный на Pyramid.
mezzanine - Мощная, последовательная и гибкая платформа управления контентом.
plone - CMS, построенная на базе открытого сервера приложений Zope.
quokka - Гибкая, расширяемая, небольшая CMS на базе Flask и MongoDB.
wagtail - Система управления контентом на основе Django.
@BookPython
django-cms - Корпоративная CMS с открытым исходным кодом на основе Django.
feincms - Одна из самых продвинутых систем управления контентом, построенная на Django.
indico - Многофункциональная система управления событиями, созданная в CERN.
Kotti - Высокоуровневый питонический фреймворк для веб-приложений, построенный на Pyramid.
mezzanine - Мощная, последовательная и гибкая платформа управления контентом.
plone - CMS, построенная на базе открытого сервера приложений Zope.
quokka - Гибкая, расширяемая, небольшая CMS на базе Flask и MongoDB.
wagtail - Система управления контентом на основе Django.
@BookPython
👍7❤1🔥1
Протоколы в Python
В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyping), то есть — осуществлять проверку совместимости классов исключительно на основе анализа их атрибутов и методов. В этом материале мы поговорим о протоколах в Python и разберём практические примеры работы с ними.
Rus https://habr.com/ru/companies/wunderfund/articles/751424/
Eng https://towardsdatascience.com/protocols-in-python-110943832d98
@BookPython
В Python 3.8. появилась новая примечательная возможность — протоколы (protocols). Протоколы — это альтернатива абстрактным базовым классам (abstract base classes, ABC). Они позволяют пользоваться структурной подтипизацией (structural subtyping), то есть — осуществлять проверку совместимости классов исключительно на основе анализа их атрибутов и методов. В этом материале мы поговорим о протоколах в Python и разберём практические примеры работы с ними.
Rus https://habr.com/ru/companies/wunderfund/articles/751424/
Eng https://towardsdatascience.com/protocols-in-python-110943832d98
@BookPython
👍5
Python backend
Python - Архитектура кода
Python - Базы данных и миграции
Python - Тестирование
Python - Тестирование
Нагрузочное тестирование
Нагрузочное тестирование (лайвкодинг)
Девопс, деплой, CI/CD. Часть 1
Девопс, деплой, CI/CD. Часть 2
Архитектура распределенных систем
Python - Дебаг - логирование - профилирование
Код-ревью
Python - Асинхронное программирование. Часть 1
Python - Асинхронное программирование. Часть 2
Отбор в IT компанию
Лекция Практики разработчиков
Интенсив по алгоритмам. Введение
Интенсив по алгоритмам. Разбор ДЗ 2
Все видео доступны на youtube
@BookPython
Python - Архитектура кода
Python - Базы данных и миграции
Python - Тестирование
Python - Тестирование
Нагрузочное тестирование
Нагрузочное тестирование (лайвкодинг)
Девопс, деплой, CI/CD. Часть 1
Девопс, деплой, CI/CD. Часть 2
Архитектура распределенных систем
Python - Дебаг - логирование - профилирование
Код-ревью
Python - Асинхронное программирование. Часть 1
Python - Асинхронное программирование. Часть 2
Отбор в IT компанию
Лекция Практики разработчиков
Интенсив по алгоритмам. Введение
Интенсив по алгоритмам. Разбор ДЗ 2
Все видео доступны на youtube
@BookPython
👍13🔥3
Как имитировать разрыв соединения с базой данных для тестирования в Django
Я очень долго пытался понять, как имитировать разрыв соединения с базой данных в Django. Проблема заключается в том, что таймаут должен быть не только у необработанных курсоров, но и у всех моделей, обращающихся к базе данных.
Это означает, что где бы мы ни вызывали Model.objects.filter(), Model.objects.all() или connection.cursor(), операция должна завершиться неудачей.
https://neilkakkar.com/test-database-connection-django.html
@BookPython
Я очень долго пытался понять, как имитировать разрыв соединения с базой данных в Django. Проблема заключается в том, что таймаут должен быть не только у необработанных курсоров, но и у всех моделей, обращающихся к базе данных.
Это означает, что где бы мы ни вызывали Model.objects.filter(), Model.objects.all() или connection.cursor(), операция должна завершиться неудачей.
https://neilkakkar.com/test-database-connection-django.html
@BookPython
Neil Kakkar
How to simulate a broken database connection for testing in Django
Three different options for how to effectively test Django code accessing the database
👍4
Объект многоточие в Python
Как-то раз я наткнулся на такой фрагмент кода на Python:
Сначала я решил, что это просто какой-то псевдокод. В Python для заполнения тела пустой функции, которая еще не реализована, обычно используется ключевое слово pass. Я подумал: «здесь указано, что далее будет больше кода, но в этом месте код сокращен, чтобы просто понять идею». Следовательно, использование ключевого слова pass означало бы, что что-то еще не реализовано. Больше я об этом не задумывался, но иногда использовал сам, чтобы объяснить коллегам определенную концепцию.
https://florian-dahlitz.de/articles/what-is-pythons-ellipsis-object
@BookPython
Как-то раз я наткнулся на такой фрагмент кода на Python:
class CustomException(Exception):
...
Сначала я решил, что это просто какой-то псевдокод. В Python для заполнения тела пустой функции, которая еще не реализована, обычно используется ключевое слово pass. Я подумал: «здесь указано, что далее будет больше кода, но в этом месте код сокращен, чтобы просто понять идею». Следовательно, использование ключевого слова pass означало бы, что что-то еще не реализовано. Больше я об этом не задумывался, но иногда использовал сам, чтобы объяснить коллегам определенную концепцию.
https://florian-dahlitz.de/articles/what-is-pythons-ellipsis-object
@BookPython
👍8
Личный путь и опыт в становлении Python разработчиком
В этой статье, а точнее целой истории, я хотел бы поделиться своим путем становления в качестве разработчика на Python и рассказать о некоторых идеях и советах, которые я усвоил за это время.
Начиная с моих первых проектов и заканчивая моей текущей деятельностью, я поделюсь накопленным опытом и попробую осветить проблемы, с которыми я столкнулся на своем пути.
Кого-то данная статься вдохновит начать свой собственный путь в разработке, а кому-то будет интересно прочитать историю успешного кейса входа и закрепления в ИТ.
В любом случае, я надеюсь, что моя история покажет, что нет никаких преград в освоении и достижении определенного уровня даже в такой, казалось бы сложной области, как программирование, и что вы сможете отметить полезные моменты для себя.
https://habr.com/ru/articles/717424/
@BookPython
В этой статье, а точнее целой истории, я хотел бы поделиться своим путем становления в качестве разработчика на Python и рассказать о некоторых идеях и советах, которые я усвоил за это время.
Начиная с моих первых проектов и заканчивая моей текущей деятельностью, я поделюсь накопленным опытом и попробую осветить проблемы, с которыми я столкнулся на своем пути.
Кого-то данная статься вдохновит начать свой собственный путь в разработке, а кому-то будет интересно прочитать историю успешного кейса входа и закрепления в ИТ.
В любом случае, я надеюсь, что моя история покажет, что нет никаких преград в освоении и достижении определенного уровня даже в такой, казалось бы сложной области, как программирование, и что вы сможете отметить полезные моменты для себя.
https://habr.com/ru/articles/717424/
@BookPython
Хабр
Личный путь и опыт в становлении Python разработчиком
Привет, Хабр! В этой статье, а точнее целой истории, я хотел бы поделиться своим путем становления в качестве разработчика на Python и рассказать о некоторых идеях и советах, которые я усвоил за это...
👍8
Пишем GPT в 60 строк NumPy
В первой части мы начнём реализацию с нуля GPT всего в 60 строках numpy.
В завершающей части мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
@BookPython
В первой части мы начнём реализацию с нуля GPT всего в 60 строках numpy.
В завершающей части мы загрузим в нашу реализацию опубликованные OpenAI веса обученной модели GPT-2 и сгенерируем текст.
@BookPython
👍10
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод new вызывается для создания экземпляра класса, перед вызовом init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).
В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.
То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.
👉@BookPython
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод new вызывается для создания экземпляра класса, перед вызовом init. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).
В примере мы проверяем, есть ли значение у атрибута instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.
То есть при вызове конструктора класса Singleton, будет возвращаться один и тот же объект из памяти.
👉@BookPython
👍10
Media is too big
VIEW IN TELEGRAM
Python Full Course for free 🐍
#python #tutorial #beginners
⭐️Time Stamps⭐️
#1 (00:00:00) Python tutorial for beginners 🐍
#2 (00:05:57) variables ✘
#3 (00;17;38) multiple assignment 🔠
#4 (00:20:27) string methods 〰️
#5 (00:25:13) type cast 💱
#6 (00:30:14) user input ⌨️
#7 (00:36:50) math functions 🧮
#8 (00:40:58) string slicing ✂️
#9 (00:51:52) if statements 🤔
#10 (00:58:19) logical operators 🔣
#11 (01:04:03) while loops 🔄
#12 (01:07:31) for loops ➰
#13 (01:13:04) nested loops ➿
......
#82 (08:21:30) new windows 🗔
#83 (08:25:32) window tabs 📑
#84 (08:30:52) grid 🏢
#85 (08:39:52) progress bar 📊
#86 (08:49:48) canvas 🖍️
#87 (09:01:18) keyboard events ⌨️
#88 (09:05:54) mouse events 🖱️
#89 (09:11:00) drag & drop 👈
#90 (09:18:18) move images w/ keys 🏎️
#91 (09:29:13) animations 🛸
#92 (09:41:31) multiple animations 🎞️
#93 (09:53:04) clock program 🕒
#94 (10:01:03) send an email 📧
#95 (10:07:37) run with command prompt 👨💻
#96 (10:09:53) pip 🏗️
#97 (10:13:30) py to exe 🏃
#98 (10:17:13) calculator program 🖩
#99 (10:31:38) text editor program ✏️
100 (11:05:51) tic tac toe game ⭕
101 (11:26:25) snake game 🐍
источник
👉@BookPython
#python #tutorial #beginners
⭐️Time Stamps⭐️
#1 (00:00:00) Python tutorial for beginners 🐍
#2 (00:05:57) variables ✘
#3 (00;17;38) multiple assignment 🔠
#4 (00:20:27) string methods 〰️
#5 (00:25:13) type cast 💱
#6 (00:30:14) user input ⌨️
#7 (00:36:50) math functions 🧮
#8 (00:40:58) string slicing ✂️
#9 (00:51:52) if statements 🤔
#10 (00:58:19) logical operators 🔣
#11 (01:04:03) while loops 🔄
#12 (01:07:31) for loops ➰
#13 (01:13:04) nested loops ➿
......
#82 (08:21:30) new windows 🗔
#83 (08:25:32) window tabs 📑
#84 (08:30:52) grid 🏢
#85 (08:39:52) progress bar 📊
#86 (08:49:48) canvas 🖍️
#87 (09:01:18) keyboard events ⌨️
#88 (09:05:54) mouse events 🖱️
#89 (09:11:00) drag & drop 👈
#90 (09:18:18) move images w/ keys 🏎️
#91 (09:29:13) animations 🛸
#92 (09:41:31) multiple animations 🎞️
#93 (09:53:04) clock program 🕒
#94 (10:01:03) send an email 📧
#95 (10:07:37) run with command prompt 👨💻
#96 (10:09:53) pip 🏗️
#97 (10:13:30) py to exe 🏃
#98 (10:17:13) calculator program 🖩
#99 (10:31:38) text editor program ✏️
100 (11:05:51) tic tac toe game ⭕
101 (11:26:25) snake game 🐍
источник
👉@BookPython
👍7