在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 反應(yīng)式編程
事件驅(qū)動程序
反應(yīng)式編程
進程池
線程
線程池
Python并發(fā)簡介
并發(fā)vs并行
同步線程
調(diào)試線程應(yīng)用程序
進程間通信
線程通信
Python并發(fā)編程教程
測試線程應(yīng)用程序
基準和性能分析
系統(tǒng)和內(nèi)存架構(gòu)
線程的實現(xiàn)
多進程

反應(yīng)式編程

反應(yīng)式編程是處理數(shù)據(jù)流和變化傳播的編程范例。 這意味著,當數(shù)據(jù)流由一個組件發(fā)出時,更改將通過反應(yīng)式編程庫傳播到其他組件。變化的傳播將持續(xù)到最終的接收者。 事件驅(qū)動和反應(yīng)式編程的區(qū)別在于,事件驅(qū)動式編程圍繞事件展開,反應(yīng)式編程圍繞著數(shù)據(jù)展開。

ReactiveX或RX用于反應(yīng)式編程
ReactiveX或者Raective Extension是反應(yīng)式編程最著名的實現(xiàn)。 ReactiveX的工作取決于以下兩個類 -

可觀察的類
這個類是數(shù)據(jù)流或事件的來源,它打包傳入的數(shù)據(jù),以便數(shù)據(jù)可以從一個線程傳遞到另一個線程。 在某些觀察者訂閱它之前,它不會提供數(shù)據(jù)。

觀察員類
該類使用observable發(fā)出的數(shù)據(jù)流。 可以有多個可觀察的觀察者,每個觀察者將接收每個發(fā)射的數(shù)據(jù)項。 觀察者可以通過訂閱可觀察到的三種類型的事件 -

  • on_next()事件 - 它意味著數(shù)據(jù)流中有一個元素。
  • on_completed()事件 - 它意味著排放已經(jīng)結(jié)束,沒有更多數(shù)據(jù)項到來。
  • on_error()事件 - 它也意味著排放的結(jié)束,但在可觀察到拋出錯誤的情況下。

RxPY - 用于反應(yīng)式編程的Python模塊

RxPY是一個Python模塊,可用于反應(yīng)式編程。 我們需要確保模塊已安裝。 以下命令可用于安裝RxPY模塊 -

pip install RxPY

例子
以下是一個Python腳本,它使用RxPY模塊及Observable類和Observe類來進行反應(yīng)式編程。 基本上有兩類 -

  • get_strings() - 用于從觀察者獲取字符串。
  • PrintObserver() - 用于從觀察者打印字符串。 它使用觀察員班的所有三個事件。 它也使用subscribe()類。

參考以下實現(xiàn)代碼 -

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())

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Received Ram
Received Mohan
Received Shyam
Finished

用于反應(yīng)式編程的PyFunctional庫

PyFunctionalis是另一個可用于響應(yīng)式編程的Python庫。 它使我們能夠使用Python編程語言創(chuàng)建功能程序。 這很有用,因為它允許我們通過使用鏈式函數(shù)操作符來創(chuàng)建數(shù)據(jù)管道。

RxPY和PyFunctional之間的區(qū)別

這兩個庫都用于響應(yīng)式編程,并以類似的方式處理流,但兩者的主要區(qū)別取決于數(shù)據(jù)的處理。 RxPY處理系統(tǒng)中的數(shù)據(jù)和事件,而PyFunctional專注于使用函數(shù)式編程范例轉(zhuǎn)換數(shù)據(jù)。

安裝PyFunctional模塊

需要在使用之前安裝這個模塊??梢酝ㄟ^以下pip命令來安裝 -

pip install pyfunctional

例子
以下示例使用PyFunctional模塊及其seq類,它們充當可以迭代和操作的流對象。 在這個程序中,它使用將每個值加倍的lamda函數(shù)映射序列,然后過濾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))

執(zhí)行上面示例代碼,得到以下結(jié)果 -

Result: 6

上一篇:事件驅(qū)動程序下一篇:線程通信