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

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

Сайт: https://pythonomania.github.io/
Download Telegram
📱Threaded Map-Reduce.

Threaded Map-Reduce — это библиотека, реализующая паттерн Map-Reduce с настоящей многопоточностью, без ограничений GIL, благодаря экспериментальной версии Python 3.13+ с поддержкой free-threading.

❓ Зачем это нужно?

При работе с CPU-нагруженными задачами (например, в биоинформатике или обработке больших данных) использование потоков в стандартном Python не даёт прироста из-за GIL. Но с free-threaded Python 3.13+ можно задействовать все ядра процессора на полную мощность.

🔹Пример использования:
from threaded_map_reduce import map_reduce
from operator import add

def square(x): return x * x

result = map_reduce(
map_fn=square,
reduce_fn=add,
iterable=range(1, 1001),
num_computing_threads=4,
num_items_per_chunk=100
)
print(f"Сумма квадратов: {result}")


📊Производительность:

🔘Тесты на Intel i7-1260P показали ускорение в разы.

🔘Итераторы в Python не потокобезопасны, поэтому используется безопасная разбивка на чанки.

🔘Очереди тоже тестировались, но оказались чуть менее эффективны.

❗️Важно:

🔘Работает только с Python 3.13+ (с ключом -Xno-gil или uv run).

🔘reduce_fn должна быть ассоциативной.

🔘Некоторые библиотеки (например, pandas или gzip) реактивируют GIL при импорте, что может сломать многопоточность.

#Python313 #FreeThreading #MapReduce #Multithreading #NoGIL #CPUIntensive #Python #OpenSource #Биоинформатика #ПараллельныеВычисления #Разработка #GIL #PythonPerformance #MapReducePython #ThreadedPython

📱Ссылка на репозиторий:
https://github.com/JoseBlanca/threaded-map-reduce
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍33
📱Bengal.

Bengal — это быстрый статический генератор сайтов для Python 3.14+ с параллельной сборкой, автодоком и валидацией контента, ориентированный на современные проекты (блоги, документацию, лендинги и т.п.).

🔹Ключевые возможности:

🔘Производительность: параллельные сборки, инкрементальные rebuild’ы, кэширование сжатое Zstandard.

🔘Современный стек: требует Python 3.14+, использует free-threading и полностью типизирован.

🔘«Из коробки»: автогенерация API‑доков (Python, CLI, OpenAPI), валидация контента, анализ структуры сайта.

🔘Расширяемость: сменные движки шаблонов, Markdown‑парсеров и подсветки кода без изменения контента.

🚀Быстрый старт:

🔘Установка и запуск dev‑сайта:
  pip install bengal
bengal new site mysite && cd mysite && bengal serve

Первая команда создаёт каркас, вторая поднимает dev‑сервер с live‑reload.

🔻Основные команды:

🔘bengal build — продакшн‑сборка.
🔘 bengal serve — dev‑сервер.
🔘bengal validate — проверки и валидация.
🔘bengal fix — авто‑фикс проблем.
🔘bengal graph report — отчёт по структуре сайта.

🔻Генерация структуры сайта:

🔘Интерактивный мастер: bengal new site задаёт вопросы и предлагает пресеты: blog, docs, portfolio, product, resume, blank, custom.

🔘Шаблоны без вопросов:
  bengal new site my-docs --template docs
bengal new site my-blog --template blog
bengal new site portfolio --template portfolio

Каждый шаблон создаёт готовые разделы (docs: getting-started, guides, reference; blog: blog + about и т.д.).

🔻Расширение существующего сайта:

🔘Добавление секций:
  bengal init --sections docs --sections tutorials
bengal init --sections blog --with-content --pages-per-section 5
bengal init --sections api --dry-run

Тип секции выводится из имени (blog/posts → blog, docs/guides → doc, about/contact → section).

🔘Сложные структуры можно описать YAML‑манифестами и применить через bengal project skeleton apply my-structure.yaml.[1]

🔻Технологический стек и лицензия:

🔘Тема по умолчанию: тёмная/светлая, адаптивная, с поиском, TOC и подсветкой.

🔘Движки: шаблоны Kida/Jinja2, Markdown‑парсеры Patitas/Mistune/Python‑Markdown, подсветка Rosettes (быстрее Pygments).

🔘Проект распространяется под лицензией MIT, что даёт максимально свободное использование и модификацию кода.

#Bengal #Python #StaticSiteGenerator #SSG #Python314 #FreeThreading #WebDev #Docs #Blog #Autodoc #Markdown #Jinja2 #Performance #DevTools

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

cereggii — это библиотека для синхронизации потоков в Python, заточенная под free-threaded режим (Python 3.13+): атомарные структуры данных и примитивы без GIL‑блокировки.

🔹Особенности:

🔘Lock‑free структуры: AtomicDict, AtomicCache, AtomicInt64, AtomicRef — параллельные операции без явных локов.

🔘Примитивы координации: CountDownLatch, call_once, ReadersWriterLock для управления сложными мультипоточными воркфлоу.

🔘Масштабируемость: в free-threaded Python эти структуры работают быстрее встроенных dict/int, задействуя все ядра CPU без implicit lock.

🔻Пример:

from cereggii import AtomicDict, ThreadSet

counter = AtomicDict({"red": 42, "green": 3})

@ThreadSet.repeat(10) # 10 потоков
def workers():
counter.reduce_count(["red"] * 60 + ["green"] * 7)

workers.start_and_join()


🐱Установка:

pip install cereggii


#python #concurrency #freethreading #atomicoperations #gil #cereggii #threading

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