Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
276 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
🚀 Привет, коллеги!

Многие из вас знакомы с Habr. Кто-то уже делился там своими статьями, а кто-то, возможно, столкнулся с модерацией или другими сложностями.

Мы с командой начали новый проект — DevGurt — площадку для общения и публикации статей для всех, кто так или иначе связан с Dev-IT индустрией. Проект сейчас находится на стадии MVP (минимально жизнеспособный продукт), но мы активно работаем над его развитием и расширением.
(☺️https://devgurt.com/☺️)

Чем вы можете помочь? Мы ждем вашей поддержки, советов и, конечно, обратной связи! Регистрируйтесь, публикуйте статьи, делитесь мнениями. Нам важно знать, что вы думаете!
(Форма обратной связи - https://forms.gle/hra11i99sDsh31XG7)

💡 В планах — подключение монетизации, чтобы авторы могли получать вознаграждения за свой труд.

Присоединяйтесь и давайте вместе создадим что-то крутое!

https://devgurt.com/


p.s. Небольшая статья о том, как пользоваться платформой
https://devgurt.com/offtop/16-cto-takoe-devgurt-i-kak-im-polzovatsya
❤‍🔥2👍2😱21👨‍💻1
Оптимизация производительности с Numba в Python 🐍

🔍 Что такое Numba?

Numba - это JIT-компилятор (Just-In-Time), который преобразует Python и NumPy код в быстрый машинный код. Это позволяет значительно ускорить выполнение вычислительно-интенсивных задач. 🧠⚡️

💡 Как использовать Numba?

Использовать Numba очень просто! Вот пример:

from numba import jit
import numpy as np

@jit(nopython=True)
def sum_of_squares(arr):
sum = 0
for i in range(arr.shape[0]):
sum += arr[i]**2
return sum

# Пример использования
arr = np.arange(1000000)
result = sum_of_squares(arr)
print(f"Сумма квадратов: {result}")


🔬 Что происходит?


1️⃣ Мы импортируем декоратор @jit из Numba

2️⃣ Применяем декоратор к нашей функции

3️⃣ Numba компилирует функцию при первом вызове

4️⃣ Последующие вызовы используют скомпилированную версию 🚀

📊 Результаты

На больших массивах Numba может ускорить код в десятки раз! Например, для массива из миллиона элементов:

- Обычный Python: ~1 секунда
- С Numba: ~0.01 секунды ⚡️

🎯 Советы по использованию

- Используйте режим nopython=True для максимальной производительности
- Numba лучше всего работает с числовыми типами данных и NumPy массивами
- Избегайте использования Python-объектов внутри jit-функций
👍4
This media is not supported in the widget
VIEW IN TELEGRAM
👎7🗿5
Python Hub - сборище Питонистов
Купите возможность посмотреть на черный квадрат😏 p.s. хочу посмотреть на то, как работают TG STARS
1️⃣. Привычно ли смотреть на текст НАД картинкой?🧐
2️⃣. Стоит ли применять такую логику в постах?

3️⃣. За что вы начали ставить дизлайки?🫣😔
4️⃣. Знали, что платный контент нельзя редачить? Знайте!
👍42👎1🥴1
Создание собственных декораторов с functools.wraps на Python 🐍

Что такое декораторы? 🤔

Декораторы в Python - это мощный инструмент для изменения поведения функций или классов без изменения их исходного кода. Они позволяют "обернуть" существующую функцию дополнительной функциональностью.

Зачем нужен functools.wraps? 🎁

При создании декораторов возникает проблема: метаданные декорируемой функции (такие как имя и документация) теряются. Здесь на помощь приходит functools.wraps!

Пример декоратора без functools.wraps 😕

def my_decorator(func):
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper

@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")

print(greet.__name__) # Выводит: wrapper
print(greet.__doc__) # Выводит: None


Пример с использованием functools.wraps 🌟

from functools import wraps

def my_decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
print("До выполнения функции")
result = func(*args, **kwargs)
print("После выполнения функции")
return result
return wrapper

@my_decorator
def greet(name):
"""Эта функция приветствует пользователя"""
print(f"Привет, {name}!")

print(greet.__name__) # Выводит: greet
print(greet.__doc__) # Выводит: Эта функция приветствует пользователя


Преимущества использования functools.wraps 🏆

1. Сохранение метаданных функции
2. Улучшение отладки и документирования
3. Совместимость с инструментами анализа кода
👍1🤯1
🔥 Параллельная обработка данных с Dask в Python: Мощь и Простота

➡️Что такое Dask? 🤔

Dask - это гибкая библиотека для параллельных вычислений в Python. Она позволяет обрабатывать большие объемы данных, распределяя нагрузку на несколько ядер процессора или даже на кластер компьютеров. 💻➡️💻➡️💻

➡️ Почему Dask? 🌟

- Масштабируемость: от ноутбука до кластера 📈
- Совместимость с экосистемой Python (NumPy, Pandas) 🐍
- Ленивые вычисления для оптимизации 🦥

➡️ Примеры использования Dask 💡

➡️1. Параллельные вычисления с Dask Array 📊

import dask.array as da

# Создаем большой массив
x = da.random.random((10000, 10000), chunks=(1000, 1000))

# Выполняем операции
result = (x + 1).mean().compute()

print(f"Среднее значение: {result}")


➡️ 2. Обработка больших DataFrame с Dask 📈

import dask.dataframe as dd

# Читаем большой CSV файл
df = dd.read_csv('huge_file.csv')

# Выполняем группировку и агрегацию
result = df.groupby('category').agg({'value': 'mean'}).compute()

print(result)


➡️ 3. Параллельное применение функций с Dask Delayed 🔄

from dask import delayed

@delayed
def process_data(x):
# Здесь может быть сложная обработка
return x * 2

data = [1, 2, 3, 4, 5]
results = [process_data(x) for x in data]
final_result = delayed(sum)(results).compute()

print(f"Итоговый результат: {final_result}")


➡️ Заключение 🎉

Dask - это мощный инструмент для параллельной обработки данных в Python. Он позволяет легко масштабировать ваши вычисления и работать с большими объемами данных эффективно. Начните использовать Dask сегодня и ощутите разницу в скорости обработки ваших данных! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Друзья, у нас отличные новости!

Теперь вы можете писать и публиковать свои статьи на различные IT-темы на нашем сайте — devgurt.com 🖥. Лучшие работы и авторы будут отмечены и вознаграждены! 💻

Статьи будут попадать в нашу группу с указанием автора, если вы пожелаете!©️

А ещё, мы запустили второй телеграм-канал — @devgurt 🚀.

Там будут появляться статьи не только по Python, но и по программированию и технологиям в целом. Присоединяйтесь и будьте в курсе всех новинок! 🔥

Подписывайтесь и делитесь своими знаниями с сообществом! 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
5
❗️Работа с памятью: weakref модуль в Python❗️


1. Модуль weakref 🔗

Модуль weakref предоставляет инструменты для создания слабых ссылок на объекты. 🛠

➡️ Что такое слабые ссылки? 🤔

Слабые ссылки позволяют ссылаться на объект без увеличения его счетчика ссылок. Это означает, что объект может быть удален сборщиком мусора, даже если на него есть слабая ссылка. 🗑

➡️ Пример использования weakref:

import weakref

class MyClass:
pass

obj = MyClass()
weak_ref = weakref.ref(obj)

print(weak_ref()) # Выводит объект MyClass
del obj
print(weak_ref()) # Выводит None


🔺 Заключение 🎓

Использование модуля weakref позволяет разработчикам Python лучше контролировать управление памятью в своих программах. Это особенно полезно при работе с большими объемами данных или в системах с ограниченными ресурсами. 💡
Please open Telegram to view this post
VIEW IN TELEGRAM
3👍2
❗️Что такое Legacy код?❗️

Legacy код, или унаследованный код, - это существующая кодовая база, которая продолжает использоваться, несмотря на то, что она может быть устаревшей, плохо структурированной или трудной для поддержки. 🏛

➡️ Характеристики Legacy кода 📊

- Устаревшие технологии или методологии 🕰
- Отсутствие или недостаточность документации 📄
- Сложность в поддержке и расширении 🔧
- Высокая связность и низкая сплоченность 🔗

➡️ Примеры Legacy кода на разных языках 💻

😅 Python

# Legacy код на Python
def calculate_total(items):
total = 0
for item in items:
total = total + item['price'] * item['quantity']
return total

# Современный эквивалент
def calculate_total(items):
return sum(item['price'] * item['quantity'] for item in items)

😄 C++ 🔨 и Java ☕️ коды доступны в нашем телеграм канале, посвященному разработке не только на Python


➡️ Проблемы, связанные с Legacy кодом 🚧

- Сложность внесения изменений и добавления новых функций 🔒
- Повышенный риск появления ошибок при модификации 🐛
- Трудности в интеграции с современными технологиями 🔌
- Зависимость от устаревших библиотек и фреймворков 📚

➡️ Стратегии работы с Legacy кодом 🛠

- Постепенный рефакторинг 🔄
- Написание тестов для существующего кода 🧪
- Документирование существующей функциональности 📝
- Модульная замена частей системы 🧩

🔺 Заключение

Работа с Legacy кодом - это неизбежная часть жизни многих разработчиков. Хотя он может представлять сложности, правильный подход к его обработке может значительно улучшить качество и поддерживаемость программного обеспечения. 🌟
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Признавайся. Твоя фича?🤨
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Большинство людей попалось на уловке с 27/3. Дело в том, что деление в Python всегда выдает дробное число. То бишь 27/3 —> 9.0. Если вы хотите получить целое, то используйте // (целочисленное деление)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
🟢 Введение в FastStream (кратко) 🌊

FastStream - это мощная библиотека для Python, которая упрощает создание и управление потоковыми приложениями. Она предоставляет удобный интерфейс для работы с различными брокерами сообщений, такими как Kafka и RabbitMQ. 🐰🐘

Основные преимущества FastStream 🌟

- 🔧 Простота использования
- 🚀 Высокая производительность
- 🔄 Поддержка асинхронного программирования
- 🔌 Легкая интеграция с существующими проектами

💠 Установка FastStream 💻

Для начала работы с FastStream, установите библиотеку с помощью pip:

pip install faststream


## Пример использования FastStream с Kafka 🚀

Давайте рассмотрим простой пример использования FastStream с Kafka:

from faststream import FastStream, Logger
from faststream.kafka import KafkaBroker

# Создаем брокер Kafka
broker = KafkaBroker("localhost:9092")

# Инициализируем FastStream
app = FastStream(broker)

# Определяем обработчик сообщений
@broker.subscriber("input-topic")
async def process_message(msg: str, logger: Logger):
logger.info(f"Получено сообщение: {msg}")
# Обработка сообщения
processed_msg = msg.upper()
# Отправка обработанного сообщения
await broker.publish(processed_msg, "output-topic")

# Запускаем приложение
if __name__ == "__main__":
app.run()


➡️ Объяснение примера 🧐

В этом примере мы:

1. Импортируем необходимые модули из FastStream.
2. Создаем брокер Kafka, указывая адрес сервера.
3. Инициализируем FastStream с нашим брокером.
4. Определяем функцию-обработчик сообщений с декоратором @broker.subscriber.
5. В обработчике мы логируем полученное сообщение, преобразуем его в верхний регистр и отправляем в другую тему.
6. Запускаем приложение с помощью app.run().

смотреть больше примеров можно тут в статье
Please open Telegram to view this post
VIEW IN TELEGRAM
👍32
Python и все, что с ним связано и для него нужно держится в топ 10 всех трех списков🤘🏻

Что думаете на данный счет?🤨

Больше статистик в этом посте.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5
Топ 3 расширения для VSCode 👩‍💻

➡️ autoDocstring
Быстро генерирует докстринги по шаблону. Удобно когда пишешь либы. Скачать можно тут

➡️ Auto-Collapse Folders
Сворачивает все лишние папки, оставляет открытой только ту, в которой ты находишься.
Скачать можно тут

➡️ Code Spell Checker
Проверяет написания всех слов, исправляет опечатки. Скачивай тут. Чтобы был русский язык качай еще это

Ставьте 👍 и заходите в наш чатик)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31
🚀 Создание многопоточных приложений с concurrent.futures в Python (основы)


🧠 Что такое concurrent.futures?

Представьте, что вы супергерой, способный делать несколько дел одновременно. Это и есть concurrent.futures! 🦸‍♂️ Этот мощный модуль в Python позволяет вам выполнять задачи параллельно, экономя драгоценное время и ресурсы.

🛠 Основные инструменты

В нашем арсенале два главных оружия:

- 🧵 ThreadPoolExecutor - для задач, связанных с вводом-выводом
- 🖥 ProcessPoolExecutor - для вычислительно-интенсивных задач

💻 Давайте напишем код!

Вот простой пример использования ThreadPoolExecutor:

import concurrent.futures
import time

def task(name):
print(f"Задача {name} начата")
time.sleep(2)
return f"Задача {name} завершена"

with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
tasks = [executor.submit(task, f"#{i}") for i in range(5)]

for future in concurrent.futures.as_completed(tasks):
print(future.result())


🎉 Вуаля! Мы только что создали многопоточное приложение, которое выполняет 5 задач параллельно, используя пул из 3 потоков.

Преимущества использования concurrent.futures

- ⚡️ Повышение производительности
- 🧩 Простота использования
- 🔄 Автоматическое управление потоками
- 🎛 Гибкость в настройке

🔺 Заключение

Поздравляем! Теперь вы знаете, как создавать многопоточные приложения с помощью concurrent.futures. Это мощный инструмент, который поможет вам писать более эффективный и быстрый код. Не забывайте практиковаться и экспериментировать - ведь в мире многопоточности возможности безграничны! 🌈

Удачи в ваших кодерских приключениях! 💻
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21