Различные вычисления, многопоточность, асинхронность и мультипроцессность в Python
Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере.
Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.
https://habr.com/ru/companies/sberbank/articles/829098/
👉@BookPython
Всем привет! Меня зовут Дмитрий Первушин, я лидер Python-компетенций трайба ИСУ в Сбере.
Эта статья рассчитана на людей, которые уже знакомы с Python, хотя бы на уровне junior+. Я объясню, какие есть отличия и особенности в многопоточности, асинхронности и мультипроцессности в Python, где и когда они используются. Как говорится в пословице: «Всё познаётся в сравнении», именно в таком стиле я подготовил примеры. Кроме этого, буду специально делать ошибки и рассматривать неправильные подходы, чтобы можно было сразу разобраться, убедиться и запомнить, почему так делать нельзя и какой другой подход в этом случае нужно использовать.
https://habr.com/ru/companies/sberbank/articles/829098/
👉@BookPython
Как правильно записать данные в файл? Что может пойти не так в ином случае?
Когда вы используете инструкцию open без контекстного менеджера и перед закрытием файла возникает какое-либо исключение, могут возникнуть проблемы с памятью. В таком случае файл будет повреждён.
Если вы используете инструкцию with для открытия файла и возникает проблема, Python гарантирует, что файл будет корректно закрыт.
👉@BookPython
Когда вы используете инструкцию open без контекстного менеджера и перед закрытием файла возникает какое-либо исключение, могут возникнуть проблемы с памятью. В таком случае файл будет повреждён.
Если вы используете инструкцию with для открытия файла и возникает проблема, Python гарантирует, что файл будет корректно закрыт.
👉@BookPython
Метод join
Метод
Основные моменты:
— Метод принадлежит строке, вызывается на разделителе.
— В качестве разделителя можно использовать любую строку.
— В результате получится строка, где между элементами последовательности вставлен разделитель.
👉@BookPython
Метод
join()
позволяет объединить элементы последовательности (списка, кортежа и т.д.) в строку.Основные моменты:
— Метод принадлежит строке, вызывается на разделителе.
— В качестве разделителя можно использовать любую строку.
— В результате получится строка, где между элементами последовательности вставлен разделитель.
👉@BookPython
Какие различия есть между методами для списков append() и extend()?
Методы append() и extend() для списков имеют разное назначение:
— append() добавляет один элемент в конец списка, принимая в качестве аргумента этот элемент.
my_list.append(10) — добавит число 10 в конец списка my_list.
— extend() расширяет список добавляя в него несколько элементов сразу. В качестве аргумента принимается итерируемый объект (список, кортеж и т.п.).
my_list.extend([10, 20, 30]) — добавит числа 10, 20, 30 в конец списка my_list.
👉@BookPython
Методы append() и extend() для списков имеют разное назначение:
— append() добавляет один элемент в конец списка, принимая в качестве аргумента этот элемент.
my_list.append(10) — добавит число 10 в конец списка my_list.
— extend() расширяет список добавляя в него несколько элементов сразу. В качестве аргумента принимается итерируемый объект (список, кортеж и т.п.).
my_list.extend([10, 20, 30]) — добавит числа 10, 20, 30 в конец списка my_list.
👉@BookPython
Напишите функцию, которая будет принимать два списка чисел (вложенный и обычный) и проверять, все ли числа в подсписках вложенного принадлежат множеству чисел второго, обычного списка
Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными
👉@BookPython
Примечания:
1) пустой список считаем валидным подмножеством множества чисел второго списка
2) в каждом отдельном списке (как во вложенных, так и во втором, обычном списке) числа будут уникальными
👉@BookPython
Бот-парсер маркетплейса на Python
В этой статье я решил показать один из методов парсинга на Python на примере маркетплейса Wildberries.
Суть подхода в том, что мы будем не разбирать запрошенную html страницу по ссылке, а будем использовать API сайта, который используется сервисом для получения и отображения всех товаров требуемой категории.
https://habr.com/ru/companies/amvera/articles/834582/
👉@BookPython
В этой статье я решил показать один из методов парсинга на Python на примере маркетплейса Wildberries.
Суть подхода в том, что мы будем не разбирать запрошенную html страницу по ссылке, а будем использовать API сайта, который используется сервисом для получения и отображения всех товаров требуемой категории.
https://habr.com/ru/companies/amvera/articles/834582/
👉@BookPython
Global Interpreter Lock (GIL)
GIL — это механизм, который используется в Python для управления потоками выполнения. Он гарантирует, что в любой момент времени только один поток выполняется в интерпретаторе.
Он может быть полезен для задач, связанных с вводом-выводом или с использованием сторонних библиотек, написанных на языках, которые не поддерживают многопоточность.
В примере выше мы создаем два потока и запускаем их одновременно. Но из-за GIL каждый поток будет выполняться по очереди, а не параллельно.
👉@BookPython
GIL — это механизм, который используется в Python для управления потоками выполнения. Он гарантирует, что в любой момент времени только один поток выполняется в интерпретаторе.
Он может быть полезен для задач, связанных с вводом-выводом или с использованием сторонних библиотек, написанных на языках, которые не поддерживают многопоточность.
В примере выше мы создаем два потока и запускаем их одновременно. Но из-за GIL каждый поток будет выполняться по очереди, а не параллельно.
👉@BookPython
Алгоритмы на Python
Включает в себя массу алгоритмов от арифметического анализа до блокчейна и структур данных.
https://github.com/TheAlgorithms/Python/blob/master/DIRECTORY.md
👉@BookPython
Включает в себя массу алгоритмов от арифметического анализа до блокчейна и структур данных.
https://github.com/TheAlgorithms/Python/blob/master/DIRECTORY.md
👉@BookPython
Forwarded from Книги по Python | Books Python 📚
Django 5 By Example, 5th Edition: Build powerful and reliable Python web applications from scratch
Автор: Antonio Mele (2024)
Это пятое издание бестселлера, который поможет вам создавать реальные веб-приложения. Эта книга проведет вас через планирование и создание, решение типичных проблем и внедрение лучших практик, используя пошаговый подход. Вы рассмотрите широкий спектр тем разработки веб-приложений на примере четырех различных проектов: блог-приложения, социального сайта, приложения для электронной коммерции и платформы для электронного обучения. Узнайте, что нового появилось в Django 5, создавая сквозные веб-приложения на Python, следуя подробным планам проектов и понимая, как и почему работает Django.
Скачать
👉 @python_360
Автор: Antonio Mele (2024)
Это пятое издание бестселлера, который поможет вам создавать реальные веб-приложения. Эта книга проведет вас через планирование и создание, решение типичных проблем и внедрение лучших практик, используя пошаговый подход. Вы рассмотрите широкий спектр тем разработки веб-приложений на примере четырех различных проектов: блог-приложения, социального сайта, приложения для электронной коммерции и платформы для электронного обучения. Узнайте, что нового появилось в Django 5, создавая сквозные веб-приложения на Python, следуя подробным планам проектов и понимая, как и почему работает Django.
Скачать
👉 @python_360
sets.isuperset()
Функция
Она принимает в качестве аргумента другой
Это полезно при работе с множествами для проверки включения, или при проверке покрытия тестами.
Также это используется для проверки включения при работе с данными, чтобы убедиться, что один набор данных полностью покрывает другой по каким-либо критериям.
👉@BookPython
Функция
sets.isuperset()
позволяет проверить, является ли один set
подмножеством другого. Она принимает в качестве аргумента другой
set
и возвращает boolean значение — True если первый set содержит все элементы второго, и False в противном случае.Это полезно при работе с множествами для проверки включения, или при проверке покрытия тестами.
Также это используется для проверки включения при работе с данными, чтобы убедиться, что один набор данных полностью покрывает другой по каким-либо критериям.
👉@BookPython
issubclass()
Функция принимает два параметра:
👉@BookPython
Функция принимает два параметра:
class
— класс, который нужно проверить.classinfo
— класс, тип или кортеж классов и типов.issubclass()
проверяет, является ли аргумент класса (class) подклассом другого класса (classinfo) и возвращает значение типа bool (True/False).👉@BookPython
Подборка Telegram каналов для программистов
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
Системное администрирование 📌
https://t.me/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
https://t.me/sysadminof Книги для админов, полезные материалы
https://t.me/i_odmin Все для системного администратора
https://t.me/i_odmin_book Библиотека Системного Администратора
https://t.me/i_odmin_chat Чат системных администраторов
https://t.me/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
https://t.me/sysadminoff Новости Линукс Linux
https://t.me/tikon_1 Новости высоких технологий, науки и техники💡
https://t.me/mir_teh Мир технологий (Technology World)
https://t.me/rust_lib Полезный контент по программированию на Rust
https://t.me/golang_lib Библиотека Go (Golang) разработчика
https://t.me/itmozg Программисты, дизайнеры, новости из мира IT.
https://t.me/phis_mat Обучающие видео, книги по Физике и Математике
https://t.me/php_lib Библиотека PHP программиста 👨🏼💻👩💻
https://t.me/nodejs_lib Подборки по Node js и все что с ним связано
https://t.me/ruby_lib Библиотека Ruby программиста
1C разработка 📌
https://t.me/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
Программирование C++📌
https://t.me/cpp_lib Библиотека C/C++ разработчика
https://t.me/cpp_knigi Книги для программистов C/C++
https://t.me/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
https://t.me/pythonofff Python академия. Учи Python быстро и легко🐍
https://t.me/BookPython Библиотека Python разработчика
https://t.me/python_real Python подборки на русском и английском
https://t.me/python_360 Книги по Python Rus
Java разработка 📌
https://t.me/BookJava Библиотека Java разработчика
https://t.me/java_360 Книги по Java Rus
https://t.me/java_geek Учим Java на примерах
GitHub Сообщество 📌
https://t.me/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
https://t.me/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
https://t.me/developer_mobila Мобильная разработка
https://t.me/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
https://t.me/frontend_1 Подборки для frontend разработчиков
https://t.me/frontend_sovet Frontend советы, примеры и практика!
https://t.me/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
https://t.me/game_devv Все о разработке игр
Вакансии 📌
https://t.me/sysadmin_rabota Системный Администратор
https://t.me/progjob Вакансии в IT
Чат программистов📌
https://t.me/developers_ru
Библиотеки 📌
https://t.me/book_for_dev Книги для программистов Rus
https://t.me/programmist_of Книги по программированию
https://t.me/proglb Библиотека программиста
https://t.me/bfbook Книги для программистов
https://t.me/books_reserv Книги для программистов
БигДата, машинное обучение 📌
https://t.me/bigdata_1 Data Science, Big Data, Machine Learning, Deep Learning
Программирование 📌
https://t.me/bookflow Лекции, видеоуроки, доклады с IT конференций
https://t.me/coddy_academy Полезные советы по программированию
QA, тестирование 📌
https://t.me/testlab_qa Библиотека тестировщика
Шутки программистов 📌
https://t.me/itumor Шутки программистов
Защита, взлом, безопасность 📌
https://t.me/thehaking Канал о кибербезопасности
https://t.me/xakep_1 Статьи из "Хакера"
Книги, статьи для дизайнеров 📌
https://t.me/ux_web Статьи, книги для дизайнеров
Английский 📌
https://t.me/UchuEnglish Английский с нуля
Математика 📌
https://t.me/Pomatematike Канал по математике
Excel лайфхак📌
https://t.me/Excel_lifehack
Vibora
Vibora — это фреймворк для создания веб-приложений на языке Python. Он является асинхронным и предоставляет инструменты для создания высокопроизводительных веб-серверов и веб-приложений.
В этом примере мы создаем экземпляр приложения Vibora, определяем обработчик маршрута для корневого URL ("/"), который возвращает строку «Привет, мир!», и запускаем веб-сервер на порту 8000.
👉@BookPython
Vibora — это фреймворк для создания веб-приложений на языке Python. Он является асинхронным и предоставляет инструменты для создания высокопроизводительных веб-серверов и веб-приложений.
В этом примере мы создаем экземпляр приложения Vibora, определяем обработчик маршрута для корневого URL ("/"), который возвращает строку «Привет, мир!», и запускаем веб-сервер на порту 8000.
👉@BookPython
Библиотека Typer
Typer — это библиотека для создания командных интерфейсов приложений на Python.
Она позволяет легко создавать CLI приложения с поддержкой аргументов, опций, субкоманд и автоматической генерацией help.
Основные возможности Typer:
— Декоратор
— Автоматический парсинг аргументов и опций.
— Валидация и
— Автоматическая генерация help с описаниями.
— Встроенная поддержка Click для обратной совместимости.
Typer часто используется для создания утилит командной строки, CLI интерфейсов для python приложений, API клиентов, DevOps инструментов и других задач, где нужен простой и удобный интерфейс командной строки.
👉@BookPython
Typer — это библиотека для создания командных интерфейсов приложений на Python.
Она позволяет легко создавать CLI приложения с поддержкой аргументов, опций, субкоманд и автоматической генерацией help.
Основные возможности Typer:
— Декоратор
@typer.command()
для определения команд и подкоманд.— Автоматический парсинг аргументов и опций.
— Валидация и
tipped
annotations для аргументов и опций.— Автоматическая генерация help с описаниями.
— Встроенная поддержка Click для обратной совместимости.
Typer часто используется для создания утилит командной строки, CLI интерфейсов для python приложений, API клиентов, DevOps инструментов и других задач, где нужен простой и удобный интерфейс командной строки.
👉@BookPython
Создание рекомендательных систем с использованием библиотеки Surprise
Рекомендательные не только помогают нам экономить время, предоставляя персонализированные рекомендации, но и оказывают влияние на наш выбор и потребительское поведение. Подобные системы нашли применение в различных областях, включая электронную коммерцию, социальные сети, медиа-стриминг и даже медицину, помогая врачам принимать более обоснованные решения.
Surprise - это мощный инструмент, предоставляющий широкий набор алгоритмов и инструментов для построения и оценки рекомендательных систем. Эта библиотека основана на Python, является простой в использовании и гибкой в применение, что делает ее прекрасным выбором для как начинающих, так и опытных разработчиков.
https://habr.com/ru/companies/otus/articles/764222/
👉@BookPython
Рекомендательные не только помогают нам экономить время, предоставляя персонализированные рекомендации, но и оказывают влияние на наш выбор и потребительское поведение. Подобные системы нашли применение в различных областях, включая электронную коммерцию, социальные сети, медиа-стриминг и даже медицину, помогая врачам принимать более обоснованные решения.
Surprise - это мощный инструмент, предоставляющий широкий набор алгоритмов и инструментов для построения и оценки рекомендательных систем. Эта библиотека основана на Python, является простой в использовании и гибкой в применение, что делает ее прекрасным выбором для как начинающих, так и опытных разработчиков.
https://habr.com/ru/companies/otus/articles/764222/
👉@BookPython
Географические карты в Python
Geoplotlib — это библиотека для создания географических визуализаций и карт. Она предоставляет простой и удобный интерфейс для создания различных типов географических карт, например: точечные карты, тепловые карты и т. д.
В этом примере мы использовали функцию geoplotlib.kde(). Эта функция создает тепловую карту, в качестве аргумента она принимает данные с географическими координатами, а также параметры bw (ширина полосы) и cut_below (порог отсечения).
Ширина полосы определяет степень сглаживания тепловой карты, а порог отсечения позволяет убрать из визуализации области с низкой плотностью точек.
Результатом работы кода будет интерактивная тепловая карта, на которой отображены области с наибольшей концентрацией фотографий. Вы можете масштабировать и перемещать карту для изучения данных.
👉@BookPython
Geoplotlib — это библиотека для создания географических визуализаций и карт. Она предоставляет простой и удобный интерфейс для создания различных типов географических карт, например: точечные карты, тепловые карты и т. д.
В этом примере мы использовали функцию geoplotlib.kde(). Эта функция создает тепловую карту, в качестве аргумента она принимает данные с географическими координатами, а также параметры bw (ширина полосы) и cut_below (порог отсечения).
Ширина полосы определяет степень сглаживания тепловой карты, а порог отсечения позволяет убрать из визуализации области с низкой плотностью точек.
Результатом работы кода будет интерактивная тепловая карта, на которой отображены области с наибольшей концентрацией фотографий. Вы можете масштабировать и перемещать карту для изучения данных.
👉@BookPython
This media is not supported in your browser
VIEW IN TELEGRAM
QR + Tetris = QRTetris
Установка
git clone https://github.com/Firemoon777/qrtetris.git
python3 -m pip install -r requirements
https://github.com/Firemoon777/qrtetris
@BookPython
Установка
git clone https://github.com/Firemoon777/qrtetris.git
python3 -m pip install -r requirements
https://github.com/Firemoon777/qrtetris
@BookPython