Python zeromq管道模式

Python zeromq管道模式,python,zeromq,Python,Zeromq,我试图用Python和ZeroMQ实现一个管道模式,因此我创建了三个组件:producer、consumer和merge 所以,我可以发送任务,消耗(计算数字的平方),然后得到结果 我的问题是,如果我有一个计划批量提交的任务列表,并且我希望它们在分布式资源池中完成并合并结果,类似于多处理应用/应用异步 在本机python中,我通常使用 ... def f(n): return n*n ... _r=[] for i in xrange(10

我试图用Python和ZeroMQ实现一个管道模式,因此我创建了三个组件:
producer
consumer
merge

所以,我可以发送任务,消耗(计算数字的平方),然后得到结果

我的问题是,如果我有一个计划批量提交的任务列表,并且我希望它们在分布式资源池中完成并合并结果,类似于多处理应用/应用异步

在本机python中,我通常使用

    ...

    def f(n):
      return n*n

    ...
    _r=[]
    for i in xrange(1000): 
      _r.append(pool.apply_async(f,(i,)))
    ...
    #get results
    results = [ r.get() for r in _r ]
我正试图将其模拟到zeromq模式中

我的
制作人
消费者
结果
基于此。我还计划使用多台服务器作为消费者,因为这是一项长期运行的任务,因此我研究了负载平衡模式和令人生畏的问题。这对于zero mq是必要的吗?

。。。原始帖子改变了问题的措辞(不包括并行处理的初始请求),并改变了目标。

此答案在这些更新之前开始,当
O/P包含
一个问题时
. . . 如何知道我的第一批结果已准备就绪?

我怎么知道我的第一个。。。最简单的部分是: 处理管道的
结果\u收集器
端可以是
.poll()
zmq.Poller
实例关联的
接收器,以测试是否存在首次出现的
zmq.POLLIN
事件

或者,可能手有点脏,并处理相同的
PULL
-引擎“嗅探”的构造类似
尝试:.recv(…,zmq.NOBLOCK),除了ZMQError:#noMsgYetHandler


平行的如果你确实需要一个平行的。。。这很难 近十年来,许多文本使用了平行词。尽管如此,仍然有非常有限的情况,其中真正的并行代码执行是可能的

另外一个环节将有助于严格区分一个案件

如果您的项目适合
[1.定义]
真正的并行系统,您的ZeroMQ工作还必须为tru并行系统的执行提供强健、最小延迟的信令和超低延迟的控制平面设施(这毫无疑问是可行的,,但是您的项目的人天数消耗和专有技术+质量管理/质量保证要求已经爆炸成几个数量级的更大投资/V@R(比例)


并行解决方案正好合适吗? 如果并发
系统操作设计足够(无论是允许阻塞还是高层自上而下的非阻塞系统体系结构设计),您将有许多用于设计智能服务的直接ZeroMQ工具,循环或优先级队列标记(因此顺便说一句,本质上是非并行的,只是并发的)负载平衡器和许多方便易用的功能,在这个“轻松”的系统设计范式下