Python で監視可能なコレクションとクエリ演算子関数を使用して、非同期およびイベントベースのプログラムを作成するためのライブラリ
v3.X の場合は、v3 ブランチに移動してください。
ReactiveX for Python v4.x は Python 3.7 以降で実行されます。インストールするには:
pip3 install reactivex
ReactiveX for Python (RxPY) は、Python で監視可能なシーケンスと pip 可能なクエリ演算子を使用して、非同期およびイベントベースのプログラムを作成するためのライブラリです。 Rx を使用すると、開発者は Observable で非同期データ ストリームを表し、演算子を使用して非同期データ ストリームをクエリし、スケジューラを使用してデータ/イベント ストリームの同時実行性をパラメータ化します。
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 for Python は、120 を超える演算子と 1300 を超える単体テストに合格した Rx のかなり完全な実装です。 RxPY は主に RxJS の直接ポートですが、スレッド化およびブロック演算子の点で Rx.NET および RxJava から少し借用しています。
ReactiveX for 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 for Python では、演算子に複数のオプション引数がある場合、位置引数ではなく名前付きキーワード引数を使用する必要があります。 RxPY は、オペレーターにどの引数を与えているか (または与えていないか) を検出しようとしません。
このプロジェクトはPoetryを使用して管理されています。コードは黒、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