ZeroMQ 本機程式測試

ZeroMQ

安裝 Python ZMQ 套件,安裝前必須先裝過 Cython 套件。

$sudo pip3 install pyzmq

接著測試以下範例程式。

範例程式

參考來源:http://blog.ez2learn.com/2011/12/31/transport-lib-of-new-era-zeromq/

將以上來源的範例程式測試並由 Python 2 轉成 Python 3,目標為分配 9 組隨機的加法計算式給客戶端運算,並回傳結果至伺服端。

客戶端(rep.py):

import os
import zmq

context = zmq.Context()
socket = context.socket(zmq.REP)
socket.connect("tcp://localhost:7788")
print('Worker {} is running ...'.format(os.getpid()))

while True:
    # receive request
    a, b = socket.recv_multipart()
    a = int(a)
    b = int(b)
    print('Compute {} + {} and send response'.format(a, b))
    socket.send_string(str(a + b))

伺服端(req.py):

import zmq
import random
import time

context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.bind("tcp://*:7788")

# wait all worker connected
time.sleep(1)

for i in range(9):
    a = random.randint(0, 100)
    b = random.randint(0, 100)
    print('Compute {} + {} ...'.format(a, b))

    # send request to peer
    socket.send_multipart([str(a).encode("utf-8"), str(b).encode("utf-8")])
    # receive response from peer
    rep = socket.recv().decode("utf-8")
    print(' = {}'.format(rep))

此時先啟動 4 組客戶端程式,接著再啟動伺服端程式。

可以發現,每個客戶端程式接收了 2 組計算式(第一個接收 3 組),完成 9 組加法計算。


Comments

comments powered by Disqus