Pyper — это гибкий инструмент для конкурентной и параллельной обработки данных, основанный на принципах функционального программирования.
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).
Виды задач:
Данные передаются между задачами через очереди для обеспечения конкурентного выполнения.
#Python #Pyper #DataProcessing #Concurrency #Parallelism #ETL #OpenSource #FunctionalProgramming
https://github.com/pyper-dev/pyper
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
GitHub - pyper-dev/pyper: Concurrent Python made simple
Concurrent Python made simple. Contribute to pyper-dev/pyper development by creating an account on GitHub.
1🔥3👍1
PyFunctional — мощная Python-библиотека для работы с потоками данных в функциональном стиле!
#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
GitHub
GitHub - EntilZha/PyFunctional: Python library for creating data pipelines with chain functional programming
Python library for creating data pipelines with chain functional programming - EntilZha/PyFunctional
1👍2🔥2
Toolz — это библиотека функциональных утилит для Python.
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
GitHub
GitHub - pytoolz/toolz: A functional standard library for Python.
A functional standard library for Python. Contribute to pytoolz/toolz development by creating an account on GitHub.
2👍3 3 3 2