1import gevent 2from zmq import green as zmq 3 4# Connect to both receiving sockets and send 10 messages 5def sender(): 6 7 sender = context.socket(zmq.PUSH) 8 sender.connect('inproc://polltest1') 9 sender.connect('inproc://polltest2') 10 11 for i in range(10): 12 sender.send('test %d' % i) 13 gevent.sleep(1) 14 15 16# create zmq context, and bind to pull sockets 17context = zmq.Context() 18receiver1 = context.socket(zmq.PULL) 19receiver1.bind('inproc://polltest1') 20receiver2 = context.socket(zmq.PULL) 21receiver2.bind('inproc://polltest2') 22 23gevent.spawn(sender) 24 25# Create poller and register both receiver sockets 26poller = zmq.Poller() 27poller.register(receiver1, zmq.POLLIN) 28poller.register(receiver2, zmq.POLLIN) 29 30# Read 10 messages from both receiver sockets 31msgcnt = 0 32while msgcnt < 10: 33 socks = dict(poller.poll()) 34 if receiver1 in socks and socks[receiver1] == zmq.POLLIN: 35 print("Message from receiver1: %s" % receiver1.recv()) 36 msgcnt += 1 37 38 if receiver2 in socks and socks[receiver2] == zmq.POLLIN: 39 print("Message from receiver2: %s" % receiver2.recv()) 40 msgcnt += 1 41 42print("%d messages received" % msgcnt) 43