Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/python
- import time
- import zmq
- from zmq.devices.basedevice import ProcessDevice
- from zmq.devices.monitoredqueuedevice import MonitoredQueue
- from zmq.utils.strtypes import asbytes
- from multiprocessing import Process
- #Gate
- f_url='ipc:///tmp/fsock'
- b_url='ipc:///tmp/bsock'
- m_url='ipc:///tmp/msock'
- def gate():
- in_prefix=asbytes('in')
- out_prefix=asbytes('out')
- monitoringdevice = MonitoredQueue(zmq.PULL, zmq.PUSH, zmq.PUB, in_prefix, out_prefix)
- monitoringdevice.bind_in(f_url)
- monitoringdevice.bind_out(b_url)
- monitoringdevice.bind_mon(m_url)
- monitoringdevice.start()
- print "Program: GATE has started"
- def puller():
- print 'PULLER STARTED'
- ctx=zmq.Context()
- sock=ctx.socket(zmq.PULL)
- sock.connect(b_url)
- while True :
- data=sock.recv()
- print 'PULLER Got :', data
- def monitor(url) :
- print 'MONITOR STARTED !'
- ctx=zmq.Context()
- sock=ctx.socket(zmq.SUB)
- sock.connect(url)
- sock.setsockopt(zmq.SUBSCRIBE, '')
- while True :
- data= sock.recv()
- print 'Monitor :',url,'GOT :', data
- def sender() :
- ctx=zmq.Context()
- sock=ctx.socket(zmq.PUSH)
- sock.connect(f_url)
- for counter in range(10) :
- print 'Sender said :', counter
- sock.send(str(counter), zmq.NOBLOCK)
- time.sleep(2)
- monitor_p=Process(target=monitor, args=(m_url,))
- monitor_p.start()
- time.sleep(1)
- puller_p = Process(target=puller,)
- puller_p.start()
- time.sleep(1)
- gate_p = Process(target=gate)
- gate_p.start()
- time.sleep(1)
- sender_p = Process(target=sender)
- sender_p.start()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement