Учебники

Реактивное программирование

Реактивное программирование — это парадигма программирования, которая касается потоков данных и распространения изменений. Это означает, что когда поток данных испускается одним компонентом, изменение будет распространяться на другие компоненты с помощью библиотеки реактивного программирования. Распространение изменений будет продолжаться, пока не достигнет конечного получателя. Разница между управляемым событиями и реактивным программированием заключается в том, что программирование, управляемое событиями, вращается вокруг событий, а реактивное программирование вращается вокруг данных.

ReactiveX или RX для реактивного программирования

ReactiveX или Raective Extension — самая известная реализация реактивного программирования. Работа ReactiveX зависит от следующих двух классов:

Наблюдаемый класс

Этот класс является источником потока данных или событий и упаковывает входящие данные, чтобы данные могли быть переданы из одного потока в другой. Он не будет предоставлять данные, пока какой-либо наблюдатель не подпишется на него.

Класс наблюдателя

Этот класс потребляет поток данных, испускаемый наблюдаемым . Может быть несколько наблюдателей с наблюдаемыми, и каждый наблюдатель будет получать каждый элемент данных, который испускается. Наблюдатель может получить три типа событий, подписавшись на наблюдаемые —

  • Событие on_next () — подразумевает наличие элемента в потоке данных.

  • Событие on_completed () — подразумевает завершение эмиссии, и больше ничего не приходит.

  • Событие on_error () — также подразумевает завершение эмиссии, но в случае, когда наблюдаемая выдает ошибку.

Событие on_next () — подразумевает наличие элемента в потоке данных.

Событие on_completed () — подразумевает завершение эмиссии, и больше ничего не приходит.

Событие on_error () — также подразумевает завершение эмиссии, но в случае, когда наблюдаемая выдает ошибку.

RxPY — модуль Python для реактивного программирования

RxPY — это модуль Python, который можно использовать для реактивного программирования. Мы должны убедиться, что модуль установлен. Следующая команда может быть использована для установки модуля RxPY —

pip install RxPY

пример

Ниже приведен скрипт Python, который использует модуль RxPY и его классы Observable и Observe для реактивного программирования. Есть в основном два класса —

  • get_strings () — для получения строк от наблюдателя.

  • PrintObserver () — для печати строк из наблюдателя. Он использует все три события класса наблюдателя. Он также использует класс subscribe ().

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, которую можно использовать для реактивного программирования. Это позволяет нам создавать функциональные программы с использованием языка программирования Python. Это полезно, потому что позволяет нам создавать конвейеры данных, используя цепные функциональные операторы.

Разница между RxPY и PyFunctional

Обе библиотеки используются для реактивного программирования и обрабатывают поток одинаковым образом, но основное различие между ними зависит от обработки данных. RxPY обрабатывает данные и события в системе, а PyFunctional фокусируется на преобразовании данных с использованием парадигм функционального программирования.

Установка PyFunctional модуля

Нам нужно установить этот модуль перед его использованием. Он может быть установлен с помощью команды pip следующим образом:

pip install pyfunctional

пример

В следующем примере используется модуль PyFunctional и его класс seq, которые действуют как объект потока, с которым мы можем перебирать и манипулировать. В этой программе он отображает последовательность с помощью функции lamda, которая удваивает каждое значение, затем фильтрует значение, где x больше 4, и, наконец, уменьшает последовательность до суммы всех оставшихся значений.