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