我有一个类跟随。
class R(object):
def __init__(self, initial=0, incr=2):
self.initial = initial
self.incr = incr
self.value = initial
def add(self):
time.sleep(1)
self.value += self.incr
def mul(self):
time.sleep(3)
self.value *= self.incr
def get(self):
return self.value
我想创建一个服务器,它将执行以下操作。
R
.add()
,.mul()
方法的每次调用,服务器调用该进程并应用相应的调用。但这很耗时,所以它会立即返回。另一方面,远程R
进程仍在执行.add()
或.mul()
方法'体。.get()
方法的调用,则会调用相应的进程并对其应用.get()
。但是这次它等待结果,当结果出现时,它会终止远程R
对象。如何实现这一目标?
到目前为止我尝试了什么?
我使用multiprocessing.Process
创建了R对象。然后使用multiprocessing.Queue
put_nowait
向其发送命令。
但似乎我必须自己控制流量。还有其他框架,工具可以做同样的事情吗?
服务器是用zmq
编写的,但我愿意将其更改为其他解决方案。
答案 0 :(得分:1)
在ZeroMQ中完全可行。
ZeroMQ允许您自适应地启动远程工作器实例和负载平衡/故障安全 - 修复它们的实际性能以及它们(不可) - 可避免的静默退出。
逻辑掌握在你手中,任何由语言或环境驱动的先辈都不需要“强大”的表现。
是的,你必须做流量控制,但这是你的力量,而不是弱点 - 不是吗?
如果您需要获得更高的性能,可以采用这种方式,使用ZeroMQ / pyzmq ,甚至是更轻量级的&无脂 nanomsg 工具。 - user3666197 11月2日&17; 17 17:08
答案 1 :(得分:0)