Created
March 2, 2013 12:41
-
-
Save basilfx/5070834 to your computer and use it in GitHub Desktop.
ZMQStream with multiprocessing.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from multiprocessing import Process | |
import zmq, random | |
from zmq.eventloop import ioloop, zmqstream | |
ioloop.install() | |
def child(port, i): | |
def on_message(message): | |
print message | |
def send(): | |
stream.send("Message from %i" % i) | |
context = zmq.Context() | |
loop = ioloop.IOLoop() | |
socket = context.socket(zmq.PAIR) | |
socket.connect("tcp://127.0.0.1:%d" % port) | |
stream = zmqstream.ZMQStream(socket, loop) | |
stream.on_recv(on_message) | |
ioloop.PeriodicCallback(send, random.randint(750, 1500), loop).start() | |
loop.start() | |
def parent(): | |
def on_message(message, stream): | |
print message | |
stream.send("ACK") | |
context = zmq.Context() | |
loop = ioloop.IOLoop() | |
for i in xrange(10): | |
port = random.randint(4000, 40000) | |
socket = context.socket(zmq.PAIR) | |
socket.bind("tcp://127.0.0.1:%d" % port) | |
stream = zmqstream.ZMQStream(socket, loop) | |
stream.on_recv(lambda x: on_message(x, stream)) | |
p = Process(target=child, args=(port, i)) | |
p.start() | |
loop.start() | |
if __name__ == "__main__": | |
parent() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment