Eine Bibliothek zum Erstellen asynchroner und ereignisbasierter Programme mithilfe beobachtbarer Sammlungen und Abfrageoperatorfunktionen in Python
Für v3.X gehen Sie bitte zum v3-Zweig.
ReactiveX für Python v4.x läuft auf Python 3.7 oder höher. Zur Installation:
pip3 install reactivex
ReactiveX für Python (RxPY) ist eine Bibliothek zum Erstellen asynchroner und ereignisbasierter Programme unter Verwendung beobachtbarer Sequenzen und pipable-Abfrageoperatoren in Python. Mithilfe von Rx stellen Entwickler asynchrone Datenströme mit Observables dar, fragen asynchrone Datenströme mithilfe von Operatoren ab und parametrisieren die Parallelität in Daten-/Ereignisströmen mithilfe von Schedulern.
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 )))
Lesen Sie die Dokumentation, um die Prinzipien von ReactiveX kennenzulernen und die vollständige Referenz der verfügbaren Operatoren zu erhalten.
Wenn Sie Code von RxPY v1.x oder v3.x migrieren müssen, lesen Sie den Abschnitt zur Migration.
Hier finden Sie auch eine Liste der Dokumentation von Drittanbietern.
Nehmen Sie an der Diskussion auf GitHub Discussions teil! wenn Sie Fragen oder Anregungen haben.
ReactiveX für Python ist eine ziemlich vollständige Implementierung von Rx mit mehr als 120 Operatoren und über 1300 bestandenen Unit-Tests. RxPY ist größtenteils eine direkte Portierung von RxJS, lehnt sich aber in Bezug auf Threading- und Blockierungsoperatoren auch ein wenig an Rx.NET und RxJava an.
ReactiveX für Python folgt PEP 8, daher werden alle Funktions- und Methodennamen snake_cased
d. h. in Kleinbuchstaben, wobei die Wörter nach Bedarf durch Unterstriche getrennt werden, um die Lesbarkeit zu verbessern.
So .NET-Code wie:
var group = source . GroupBy ( i => i % 3 ) ;
muss mit einem _
in Python geschrieben werden:
group = source . pipe ( ops . group_by ( lambda i : i % 3 ))
Mit ReactiveX für Python sollten Sie benannte Schlüsselwortargumente anstelle von Positionsargumenten verwenden, wenn ein Operator mehrere optionale Argumente hat. RxPY wird nicht versuchen zu erkennen, welche Argumente Sie dem Operator geben (oder nicht).
Dieses Projekt wird mit Poetry verwaltet. Der Code wird mit Schwarz und isort formatiert. Der Code wird mit pyright und mypy statisch typgeprüft.
Wenn Sie die standardmäßige VSCode-Integration nutzen möchten, konfigurieren Sie Poetry zunächst so, dass seine virtuelle Umgebung im Repository erstellt wird:
poetry config virtualenvs.in-project true
Aktivieren Sie nach dem Klonen des Repositorys die Tools:
poetry install
poetry run pre-commit install
Führen Sie Unit-Tests durch:
poetry run pytest
Führen Sie Codeprüfungen durch (manuell):
poetry run pre-commit run --all-files