首页 > 代码库 > ZeroMQ-Multiprocess

ZeroMQ-Multiprocess

# request_reply_processes.py
import zmq
import time
import sys
from  multiprocessing import Process

def server(port="5556"):
    context = zmq.Context()
    socket = context.socket(zmq.REP)
    socket.bind("tcp://*:%s" % port)
    print "Running server on port: ", port
    # serves only 5 request and dies
    for reqnum in range(5):
        # Wait for next request from client
        message = socket.recv()
        print "Received request #%s: %s" % (reqnum, message)
        socket.send("World from %s" % port)
         
def client(ports=["5556"]):

    context = zmq.Context()
    print "Connecting to server with ports %s" % ports
    socket = context.socket(zmq.REQ)
    for port in ports:
        socket.connect ("tcp://localhost:%s" % port)
    for request in range (20):
        print "Sending request ", request,"..."
        socket.send ("Hello")
        message = socket.recv()
        print "Received reply ", request, "[", message, "]"
        time.sleep (1)


if __name__ == "__main__":
    # Now we can run a few servers 
    server_ports = range(5550,5558,2)
    for server_port in server_ports:
        Process(target=server, args=(server_port,)).start()
        
    # Now we can connect a client to all these servers
    Process(target=client, args=(server_ports,)).start()
# running it:
(D:\anaconda) C:\Users\admin\Desktop\opt>python request_reply_processes.py

# result:
(D:\anaconda) C:\Users\admin\Desktop\opt>python request_reply_processes.py
Running server on port:  5550
Running server on port:  5552
Running server on port:  5554
Connecting to server with ports [5550, 5552, 5554, 5556]
Running server on port:  5556
Sending request  0 ...
Received request #0: Hello
Received reply  0 [ World from 5550 ]
Sending request  1 ...
Received request #0: Hello
Received reply  1 [ World from 5552 ]
Sending request  2 ...
Received request #0: Hello
Received reply  2 [ World from 5554 ]
Sending request  3 ...
Received request #0: Hello
Received reply  3 [ World from 5556 ]
Sending request  4 ...
Received request #1: Hello
Received reply  4 [ World from 5550 ]
Sending request  5 ...
Received request #1: Hello
Received reply  5 [ World from 5552 ]
Sending request  6 ...
Received request #1: Hello
Received reply  6 [ World from 5554 ]
Sending request  7 ...
Received request #1: Hello
Received reply  7 [ World from 5556 ]
Sending request  8 ...
Received request #2: Hello
Received reply  8 [ World from 5550 ]
Sending request  9 ...
Received request #2: Hello
Received reply  9 [ World from 5552 ]
Sending request  10 ...
Received request #2: Hello
Received reply  10 [ World from 5554 ]
Sending request  11 ...
Received request #2: Hello
Received reply  11 [ World from 5556 ]
Sending request  12 ...
Received request #3: Hello
Received reply  12 [ World from 5550 ]
Sending request  13 ...
Received request #3: Hello
Received reply  13 [ World from 5552 ]
Sending request  14 ...
Received request #3: Hello
Received reply  14 [ World from 5554 ]
Sending request  15 ...
Received request #3: Hello
Received reply  15 [ World from 5556 ]
Sending request  16 ...
Received request #4: Hello
Received reply  16 [ World from 5550 ]
Sending request  17 ...
Received request #4: Hello
Received reply  17 [ World from 5552 ]
Sending request  18 ...
Received request #4: Hello
Received reply  18 [ World from 5554 ]
Sending request  19 ...
Received request #4: Hello
Received reply  19 [ World from 5556 ]

(D:\anaconda) C:\Users\admin\Desktop\opt>


ZeroMQ-Multiprocess