Библиотека для составления асинхронных и событийно-ориентированных программ с использованием наблюдаемых коллекций и операторных функций запросов в Python.
Для версии 3.X перейдите в ветку версии 3.
ReactiveX для Python v4.x работает на Python 3.7 или выше. Чтобы установить:
pip3 install reactivex
ReactiveX для Python (RxPY) — это библиотека для создания асинхронных и событийно-ориентированных программ с использованием наблюдаемых последовательностей и операторов запросов с возможностью передачи в Python. Используя Rx, разработчики представляют потоки асинхронных данных с помощью Observables, запрашивают потоки асинхронных данных с помощью операторов и параметризуют параллелизм в потоках данных/событий с помощью планировщиков.
import reactivex as rx
from reactivex import operators as ops
source = rx . of ( "Alpha" , "Beta" , "Gamma" , "Delta" , "Epsilon" )
composed = source . pipe (
ops . map ( lambda s : len ( s )),
ops . filter ( lambda i : i >= 5 )
)
composed . subscribe ( lambda value : print ( "Received {0}" . format ( value )))
Прочтите документацию, чтобы изучить принципы ReactiveX и получить полный справочник доступных операторов.
Если вам нужно перенести код из RxPY v1.x или v3.x, прочтите раздел о миграции.
Здесь также доступен список сторонней документации.
Присоединяйтесь к обсуждению в обсуждениях GitHub! если у вас есть какие-либо вопросы или предложения.
ReactiveX для Python — это довольно полная реализация Rx с более чем 120 операторами и более чем 1300 пройденными модульными тестами. RxPY по большей части является прямым портом RxJS, но также немного заимствован у Rx.NET и RxJava с точки зрения операторов потоковой обработки и блокировки.
ReactiveX для Python соответствует PEP 8, поэтому все имена функций и методов имеют snake_cased
т.е. строчные буквы, а слова разделяются подчеркиванием, что необходимо для улучшения читаемости.
Таким образом, код .NET, такой как:
var group = source . GroupBy ( i => i % 3 ) ;
нужно писать с _
в Python:
group = source . pipe ( ops . group_by ( lambda i : i % 3 ))
В ReactiveX для Python вам следует использовать именованные аргументы ключевых слов вместо позиционных аргументов, когда оператор имеет несколько необязательных аргументов. RxPY не будет пытаться определить, какие аргументы вы передаете оператору (или нет).
Этот проект управляется с помощью Poetry. Код отформатирован с использованием Black, isort. Код статически проверяется на тип с помощью Pyright и MyPy.
Если вы хотите воспользоваться преимуществами интеграции VSCode по умолчанию, сначала настройте Poetry, чтобы создать виртуальную среду в репозитории:
poetry config virtualenvs.in-project true
После клонирования репозитория активируйте инструмент:
poetry install
poetry run pre-commit install
Запустите модульные тесты:
poetry run pytest
Запустите проверку кода (вручную):
poetry run pre-commit run --all-files