반응 형 프로그래밍

반응 형 프로그래밍은 데이터 흐름과 변화의 전파를 다루는 프로그래밍 패러다임입니다. 즉, 한 구성 요소에서 데이터 흐름을 내 보내면 반응 프로그래밍 라이브러리에 의해 변경 사항이 다른 구성 요소로 전파됩니다. 변경 전파는 최종 수신자에 도달 할 때까지 계속됩니다. 이벤트 기반 프로그래밍과 반응 형 프로그래밍의 차이점은 이벤트 기반 프로그래밍은 이벤트를 중심으로 진행되고 반응 형 프로그래밍은 데이터를 중심으로 진행된다는 것입니다.

반응 형 프로그래밍을위한 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 모듈 및 클래스 ObservableObserve 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