Python zeromq管道模式
我试图用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
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工具,循环或优先级队列标记(因此顺便说一句,本质上是非并行的,只是并发的)负载平衡器和许多方便易用的功能,在这个“轻松”的系统设计范式下