Skip to content

Instantly share code, notes, and snippets.

@marklit
Created November 11, 2011 10:52
Show Gist options
  • Save marklit/1357728 to your computer and use it in GitHub Desktop.
Save marklit/1357728 to your computer and use it in GitHub Desktop.
ZeroMQ Ventilator/Results Manager example
import zmq
from multiprocessing import Process
def ventilator():
context = zmq.Context()
ventilator_send = context.socket(zmq.PUSH) # Set up a channel to send work
ventilator_send.bind("tcp://127.0.0.1:5557")
for num in range(10000):
work_message = {'num' : num}
ventilator_send.send_json(work_message)
def result_manager():
context = zmq.Context() # Initialize a zeromq context
results_receiver = context.socket(zmq.PULL) # Set up a channel to receive results
results_receiver.bind("tcp://127.0.0.1:5558")
for task_nbr in range(10000):
result_message = results_receiver.recv_json()
print "Worker %i answered: %i" % (result_message['worker'], result_message['result'])
if __name__ == "__main__":
result_manager = Process(target=result_manager, args=())
result_manager.start()
ventilator()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment