반응 형 프로그래밍
반응 형 프로그래밍은 데이터 흐름과 변화의 전파를 다루는 프로그래밍 패러다임입니다. 즉, 한 구성 요소에서 데이터 흐름을 내 보내면 반응 프로그래밍 라이브러리에 의해 변경 사항이 다른 구성 요소로 전파됩니다. 변경 전파는 최종 수신자에 도달 할 때까지 계속됩니다. 이벤트 기반 프로그래밍과 반응 형 프로그래밍의 차이점은 이벤트 기반 프로그래밍은 이벤트를 중심으로 진행되고 반응 형 프로그래밍은 데이터를 중심으로 진행된다는 것입니다.
반응 형 프로그래밍을위한 ReactiveX 또는 RX
ReactiveX 또는 Raective Extension은 반응 형 프로그래밍의 가장 유명한 구현입니다. ReactiveX의 작동은 다음 두 클래스에 따라 다릅니다.
관찰 가능한 클래스
이 클래스는 데이터 스트림 또는 이벤트의 소스이며 데이터가 한 스레드에서 다른 스레드로 전달 될 수 있도록 들어오는 데이터를 압축합니다. 일부 관찰자가 구독 할 때까지 데이터를 제공하지 않습니다.
관찰자 클래스
이 클래스는 observable. Observable이있는 여러 관찰자가있을 수 있으며 각 관찰자는 방출되는 각 데이터 항목을 수신합니다. 옵저버는 observable에 가입하여 세 가지 유형의 이벤트를받을 수 있습니다.
on_next() event − 데이터 스트림에 요소가 있음을 의미합니다.
on_completed() event − 배출 종료를 의미하며 더 이상 항목이 없습니다.
on_error() event − 또한 방출의 끝을 의미하지만 오류가 발생하는 경우 observable.
RxPY – 반응 형 프로그래밍을위한 Python 모듈
RxPY는 반응 형 프로그래밍에 사용할 수있는 Python 모듈입니다. 모듈이 설치되었는지 확인해야합니다. 다음 명령을 사용하여 RxPY 모듈을 설치할 수 있습니다.
pip install RxPY
예
다음은 사용하는 Python 스크립트입니다. RxPY 모듈 및 클래스 Observable 과 Observe for반응 형 프로그래밍. 기본적으로 두 가지 클래스가 있습니다-
get_strings() − 관찰자로부터 문자열을 얻기 위해.
PrintObserver()− 관찰자로부터 문자열을 인쇄합니다. 옵저버 클래스의 세 가지 이벤트를 모두 사용합니다. 또한 subscribe () 클래스를 사용합니다.
from rx import Observable, Observer
def get_strings(observer):
observer.on_next("Ram")
observer.on_next("Mohan")
observer.on_next("Shyam")
observer.on_completed()
class PrintObserver(Observer):
def on_next(self, value):
print("Received {0}".format(value))
def on_completed(self):
print("Finished")
def on_error(self, error):
print("Error: {0}".format(error))
source = Observable.create(get_strings)
source.subscribe(PrintObserver())
산출
Received Ram
Received Mohan
Received Shyam
Finished
반응 형 프로그래밍을위한 PyFunctional 라이브러리
PyFunctional반응 형 프로그래밍에 사용할 수있는 또 다른 Python 라이브러리입니다. 파이썬 프로그래밍 언어를 사용하여 기능적 프로그램을 만들 수 있습니다. 연결된 함수 연산자를 사용하여 데이터 파이프 라인을 만들 수 있기 때문에 유용합니다.
RxPY와 PyFunctional의 차이점
두 라이브러리 모두 반응 형 프로그래밍에 사용되며 유사한 방식으로 스트림을 처리하지만 두 라이브러리의 주요 차이점은 데이터 처리에 따라 다릅니다. RxPY 시스템의 데이터와 이벤트를 처리하는 동안 PyFunctional 함수형 프로그래밍 패러다임을 사용하는 데이터 변환에 중점을 둡니다.
PyFunctional 모듈 설치
이 모듈을 사용하기 전에 설치해야합니다. 다음과 같이 pip 명령을 사용하여 설치할 수 있습니다.
pip install pyfunctional
예
다음 예제 사용 the PyFunctional 모듈과 그 seq반복 및 조작 할 수있는 스트림 객체 역할을하는 클래스. 이 프로그램에서는 모든 값을 두 배로 늘리는 람다 함수를 사용하여 시퀀스를 매핑 한 다음 x가 4보다 큰 값을 필터링하고 마지막으로 시퀀스를 나머지 모든 값의 합계로 줄입니다.
from functional import seq
result = seq(1,2,3).map(lambda x: x*2).filter(lambda x: x > 4).reduce(lambda x, y: x + y)
print ("Result: {}".format(result))
산출
Result: 6