Python Hub - сборище Питонистов
Kanalga Telegram’da o‘tish
Уголок счастья для любого питониста. Сотрудничество или заказы: @leshunist https://shcoder.dev - студия разработки ShcoderDevelopment https://t.me/pythonhub_chat - чат
Ko'proq ko'rsatish1 751
Obunachilar
-124 soatlar
Ma'lumot yo'q7 kun
+430 kun
Postlar arxiv
🔥 Параллельная обработка данных с 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 сегодня и ощутите разницу в скорости обработки ваших данных! 🚀Создание собственных декораторов с 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️⃣. Привычно ли смотреть на текст НАД картинкой?🧐
2️⃣. Стоит ли применять такую логику в постах?
3️⃣. За что вы начали ставить дизлайки?🫣😔
4️⃣. Знали, что платный контент нельзя редачить? Знайте!
Купите возможность посмотреть на черный квадрат😏
p.s. хочу посмотреть на то, как работают TG STARS
Оптимизация производительности с 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-функций🚀 Привет, коллеги!
Многие из вас знакомы с 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
Обновил старый гайдик 🔄
+добавил, как работать с медиа
+добавил, как добавить иконку
+добавил, как добавить библиотеки, которые pip'ом устанавливались
гооооо смотреть⛳️
https://www.youtube.com/watch?v=3JJ15GuzozQ
Разбор ⬇️
z = [x, y] создает список z, содержащий два элемента: список x и список y. Таким образом, z — это [[1, 2, 3], [4, 5]]. y.append(6) добавляет элемент 6 в конец списка y. После этой операции y становится [4, 5, 6]. Поскольку z содержит ссылки на x и y, любые изменения, внесенные в x или y, будут отражены в z. Когда y изменяется путем добавления 6, это изменение становится видимым в z, поскольку z содержит ссылку на исходный список y.
Было, что быстро печатаете код и вводите буквы в разном порядке?🧐🧐 Думаю, что почти у всех было!😆😆
📚 Python-разработчики, сегодня поговорим о мощной библиотеке importlib! 🐍
🔍 Что такое importlib?
Это встроенная библиотека Python, которая предоставляет интерфейс для механизма импорта. С ее помощью вы можете программно импортировать модули, перезагружать их и даже создавать свои собственные импортеры! 🚀
💡 Вот простой пример использования importlib:
import importlib
# Динамический импорт модуля
math = importlib.import_module('math')
# Использование импортированного модуля
print(math.pi) # Выводит 3.141592653589793
# Перезагрузка модуля
importlib.reload(math)
🔧 С importlib вы можете:
• Динамически импортировать модули
• Перезагружать модули во время выполнения
• Создавать пользовательские импортеры
• Работать с пространствами имен пакетов
🏆 Эта библиотека особенно полезна при разработке плагинов, создании расширяемых приложений или отладке кода.
Изучайте, экспериментируйте и становитесь Python-гуру! 🧠💻
https://docs.python.org/3/library/importlib.htmlБиблиотека python-nubia в Python 📚🐍
Сегодня мы рассмотрим библиотеку python-nubia, которая предназначена для создания командных интерфейсов в Python. Эта библиотека была разработана компанией Facebook и, хотя сейчас она больше не развивается, она все еще заслуживает внимания за свои уникальные возможности и подходы.
Удобство использования 🚀
Одним из ключевых преимуществ python-nubia является её простота и удобство использования. Библиотека позволяет легко создавать командные интерфейсы, используя аннотации и декораторы. Это делает код более читабельным и поддерживаемым. Разработчики могут быстро добавлять новые команды и опции, что значительно ускоряет процесс разработки.
Гибкость и расширяемость 🔧
Python-nubia предоставляет разработчикам высокую степень гибкости и расширяемости. Библиотека поддерживает регистрацию пользовательских команд, создание сложных иерархий команд и даже интеграцию с другими библиотеками. Это делает её отличным выбором для проектов, требующих сложных командных интерфейсов. Несмотря на то, что библиотека больше не развивается, её архитектура и подходы могут быть полезны для изучения и использования в других проектах.
Примеры использования 📋
https://github.com/facebookarchive/python-nubia
Разбор 😃
Оператор «is» проверяет идентичность объектов. Таким образом мы сравниваем идентичность переменной c, которая указывает на ячейку памяти и некого текста
