91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Pyzmq指的是什么

發布時間:2020-09-04 14:27:41 來源:億速云 閱讀:580 作者:小新 欄目:編程語言

Pyzmq指的是什么?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!

Pyzmq介紹

ZMQ (以下 ZeroMQ 簡稱 ZMQ)是一個簡單好用的傳輸層,像框架一樣的一個 socket library,他使得 Socket 編程更加簡單、簡潔和性能更高。

是一個消息處理隊列庫,可在多個線程、內核和主機盒之間彈性伸縮。ZMQ 的明確目標是“成為標準網絡協議棧的一部分,之后進入 Linux 內核”。

ZMQ 讓編寫高性能網絡應用程序極為簡單和有趣。

ZeroMQ并不是一個對socket的封裝,不能用它去實現已有的網絡協議。

它有自己的模式,不同于更底層的點對點通訊模式。

它有比tcp協議更高一級的協議。(當然ZeroMQ不一定基于TCP協議,它也可以用于進程間和進程內通訊)

zeromq 并不是類似rabbitmq消息列隊,它實際上只一個消息列隊組件,一個庫。

Pyzmq官網:zeromq.org/languages/python/
Githubgithub.com/zeromq/pyzmq
Docszeromq.github.io/pyzmq/
Guidezguide.zeromq.org/py:all

Download

pip install pyzmq

Pyzmq的幾種模式

1. 請求應答模式(Request-Reply)(rep 和 req)

消息雙向的,有來有往,req端請求的消息,rep端必須答復給req端

2. 訂閱發布模式 (pub 和 sub)

消息單向的,有去無回的。可按照發布端可發布制定主題的消息,訂閱端可訂閱喜歡的主題,訂閱端只會收到自己已經訂閱的主題。發布端發布一條消息,可被多個訂閱端同事收到。

3. push pull模式

消息單向的,也是有去無回的。push的任何一個消息,始終只會有一個pull端收到消息.

后續的代理模式和路由模式等都是在三種基本模式上面的擴展或變異。

1. Request-Reply模式(請求響應模型):

客戶端在請求后,服務端必須回響應

由客戶端發起請求,并等待服務端響應請求。從客戶端端來看,一定是一對對發收配對的;

反之,在服務端一定是收發對。服務端和客戶端都可以是1:N的模型。通常把1認為是server,N認為是Client。

ZMQ可以很好的支持路由功能(實現路由功能的組件叫做Device),把1:N擴展為N:M(只需要加入若干路由節點)。

從這個模型看,更底層的端點地址是對上層隱藏的。每個請求都隱含回應地址,而應用則不關心它

Pyzmq指的是什么

服務端:

sever.py

 import zmq import sys
 context = zmq.Context()
 socket = context.socket(zmq.REP)
 socket.bind("tcp://*:5555")
 while True:
  try:
  print("wait for client ...")
  message = socket.recv()
  print("message from client:", message.decode('utf-8'))
  socket.send(message)
  except Exception as e:
  print('異常:',e)
  sys.exit()

客戶端:

#client.py

 import zmq import sys
 context = zmq.Context()
 print("Connecting to server...")
 socket = context.socket(zmq.REQ)
 socket.connect("tcp://localhost:5555")
 while True:
 
  input1 = input("請輸入內容:").strip()
  if input1 == 'b':
  sys.exit()
  socket.send(input1.encode('utf-8'))
 
  message = socket.recv()
  print("Received reply: ", message.decode('utf-8'))
2.Publish-Subscribe模式(發布訂閱模型):

廣播所有client,沒有隊列緩存,斷開連接數據將永遠丟失。client可以進行數據過濾。

服務端

server.py

 import zmq import time import sys
 context = zmq.Context()
 socket = context.socket(zmq.PUB)
 socket.bind("tcp://*:5555")
 
 while True:
  msg = input("請輸入要發布的信息:").strip()
  if msg == 'b':
  sys.exit()
  socket.send(msg.encode('utf-8'))
  time.sleep(1)

客戶端1

client1.py

 import zmq
 
 
 context = zmq.Context()
 socket = context.socket(zmq.SUB)
 socket.connect("tcp://localhost:5555")
 socket.setsockopt(zmq.SUBSCRIBE,''.encode('utf-8'))  # 接收所有消息 while True:
  response = socket.recv().decode('utf-8');
  print("response: %s" % response)

客戶端2

client2.py

 import zmq
 context = zmq.Context()
 socket = context.socket(zmq.SUB)
 socket.connect("tcp://localhost:5555")
 socket.setsockopt(zmq.SUBSCRIBE,'123'.encode('utf-8'))  # 消息過濾  只接受123開頭的信息 while True:
  response = socket.recv().decode('utf-8');
  print("response: %s" % response)
3.Parallel Pipeline模式(管道模型):

 由三部分組成,push進行數據推送,work進行數據緩存,pull進行數據競爭獲取處理。區別于Publish-Subscribe存在一個數據緩存和處理負載。

當連接被斷開,數據不會丟失,重連后數據繼續發送到對端。

Pyzmq指的是什么

server.py

 import zmq import time
 
 context = zmq.Context()
 socket = context.socket(zmq.PUSH)
 socket.bind("tcp://*:5557")
 
 while True:
  msg = input("請輸入要發布的信息:").strip()
  socket.send(msg.encode('utf-8'))
  print("已發送")
  time.sleep(1)

worker.py

 import zmq
 context = zmq.Context()
 receive = context.socket(zmq.PULL)
 receive.connect('tcp://127.0.0.1:5557')
 sender = context.socket(zmq.PUSH)
 sender.connect('tcp://127.0.0.1:5558')
 
 while True:
  data = receive.recv()
  print("正在轉發...")
  sender.send(data)

client.py

 import zmq
 context = zmq.Context()
 socket = context.socket(zmq.PULL)
 socket.bind("tcp://*:5558")
 
 while True:
  response = socket.recv().decode('utf-8')
  print("response: %s" % response)

感謝各位的閱讀!看完上述內容,你們對Pyzmq指的是什么大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巨鹿县| 芦溪县| 青阳县| 秦安县| 高要市| 桂林市| 蒲江县| 通渭县| 南溪县| 遂平县| 凤阳县| 东丽区| 红原县| 泰安市| 江源县| 双牌县| 清水河县| 富平县| 汝阳县| 永吉县| 新龙县| 资溪县| 华池县| 阿拉善左旗| 大关县| 定结县| 天镇县| 驻马店市| 张家界市| 广饶县| 南通市| 潮安县| 文山县| 元谋县| 永平县| 加查县| 乐安县| 保定市| 曲靖市| 都匀市| 寿宁县|