PYTHONOMANIA
273 subscribers
195 photos
3 videos
1 file
616 links
Откройте для себя мир Python в PYTHONOMANIA!

Идеально подходит как для начинающих, так и для опытных разработчиков. Присоединяйтесь к нам, чтобы достичь совершенства в Python!

Сайт: https://pythonomania.github.io/
Download Telegram
📱Pyper.

Pyper — это гибкий инструмент для конкурентной и параллельной обработки данных, основанный на принципах функционального программирования.

🔹Применяется для:

🔘ETL-систем,
🔘Микросервисов для работы с данными,
🔘Сбора данных.

🔻Основные преимущества:

🔘Интуитивно понятный API: Простое и логичное использование. Единая абстракция для потоков, процессов и асинхронных задач.

🔘Функциональный подход: Построение конвейеров данных из функций Python. Код становится чистым и переиспользуемым.

🔘Безопасность: Автоматическая обработка задач, очистка ресурсов и устранение ошибок потоков. Забудьте о гонках данных и утечках памяти.

🔘Эффективность: Ленивое выполнение с использованием очередей, воркеров и генераторов.

🔘Чистый Python: Лёгкий фреймворк без сторонних зависимостей.

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

import asyncio
import time
from pyper import task

def get_data(limit: int):
for i in range(limit):
yield i

async def step1(data: int):
await asyncio.sleep(1)
print("Async завершён:", data)
return data

def step2(data: int):
time.sleep(1)
print("Sync завершён:", data)
return data

def step3(data: int):
for i in range(10_000_000):
_ = i * i
print("Тяжёлая операция завершена:", data)
return data

async def main():
pipeline = task(get_data, branch=True) \
| task(step1, workers=20) \
| task(step2, workers=20) \
| task(step3, workers=20, multiprocess=True)

total = 0
async for output in pipeline(limit=20):
total += output
print("Итог:", total)

if __name__ == "__main__":
asyncio.run(main())


❓Как это работает?

Конвейер: задачи связываются с помощью оператора | (аналог Unix pipe).

Виды задач:

✔️Асинхронные задачи для IO (step1).
✔️Потоки для синхронных IO-задач (step2).
✔️Процессы для CPU-нагруженных операций (step3).

Данные передаются между задачами через очереди для обеспечения конкурентного выполнения.

✅Попробуйте Pyper, чтобы ускорить обработку данных!

#Python #Pyper #DataProcessing #Concurrency #Parallelism #ETL #OpenSource #FunctionalProgramming

📱Ссылка на репозиторий:
https://github.com/pyper-dev/pyper
Please open Telegram to view this post
VIEW IN TELEGRAM
1🔥3👍1
📱PyFunctional.

PyFunctional
— мощная Python-библиотека для работы с потоками данных в функциональном стиле!

🔹Возможности:

🔘Цепочки операций: seq(1, 2, 3).map(...).filter(...).reduce(...).

🔘Поддержка чтения/записи файлов: text, csv, json, jsonl, sqlite, сжатые форматы.

🔘Параллельное выполнение через pseq.

🔘Полное покрытие тестами и стабильный CI.

🔘Вдохновлена Scala, Apache Spark и LINQ.

#Python #PyFunctional #DataPipeline #FunctionalProgramming #BigData #DataProcessing #SQLite #Pandas #DataEngineering #PythonTips #OpenSource #DevTools

📱Ссылка на репозиторий:
https://github.com/EntilZha/PyFunctional
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍2🔥2
📱Toolz.

Toolz — это библиотека функциональных утилит для Python.

✅Позволяет удобно и эффективно работать с итераторами, функциями и словарями в функциональном стиле.

🔹Toolz состоит из трёх модулей:

🔘itertoolz — утилиты для итераторов (groupby, unique, interpose).

🔘functoolz — функции высшего порядка (compose, curry, memoize).

🔘dicttoolz — работа со словарями (assoc, merge, update-in).

🔻 Пример — функциональный подсчёт слов в строке:
from toolz import compose, frequencies
from toolz.curried import map

def stem(word):
return word.lower().strip(",.!:;'-\"")

wordcount = compose(frequencies, map(stem), str.split)
wordcount("This cat jumped over this other cat!")
# {'this': 2, 'cat': 2, 'jumped': 1, 'over': 1, 'other': 1}


#Python #Toolz #FunctionalProgramming #PyToolz #PythonDev #PythonTools #DataProcessing #CyToolz #pip #OpenSource #PythonБиблиотеки

📱Ссылка на репозиторий:
https://github.com/pytoolz/toolz
Please open Telegram to view this post
VIEW IN TELEGRAM
2👍3332