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