我正在用Python3开发一个应用程序,它将分为batch和gui两个部分。Batch负责处理逻辑,gui负责显示逻辑。
我应该在以下需求中使用哪个进程间通信(IPC)框架:
附加:如果也保证用Python编写,那么的选择会是其他的吗?
编辑:--我发现了很多IPC库,比如这里:高效的Python到Python或ActiveMQ或RabbitMQ或ZeroMQ或。
到目前为止,我发现的最佳选择是:
他们适合这个问题吗?如果不是为什么?如果有什么更好的,请告诉我为什么。
发布于 2013-02-02 11:22:40
你提到的这三个看起来很合适,并且会支持你的要求。我认为你应该继续做你觉得最舒服的事情。
根据我个人的经验,我认为ZeroMQ是效率、易用性和互操作性的最佳组合。我很容易将ZMQ2.2与Python2.7集成在一起,所以这将是我个人的最爱。但是,正如我所说的,我确信您不会在所有3种框架中出错。
半相关:需求往往会随着时间的推移而变化,您可能会决定稍后切换框架,因此封装对框架的依赖将是一种很好的设计模式。(例如,拥有一个与框架交互并使其API使用内部数据结构和域语言的管道模块)
发布于 2013-09-08 20:47:20
我用过Redis引擎来完成这个任务。极端简单和轻量级。
服务器端做:
import redis
r = redis.Redis() # Init
r.subscribe(['mychannel']) # Subscribe to "channel"
for x in r.listen():
print "I got message",x客户方可以:
import redis
r = redis.Redis() # Init
r.publish('mychannel',mymessage)“消息”是字符串(任意大小)。如果您需要传递复杂的数据结构,我喜欢使用json.loads和json.dumps在python /数组和字符串之间进行转换--对于python通信来说,“泡菜”也许是更好的方法,尽管JSON的意思是“另一面”可以写在任何东西中。
现在还有10亿种其他的东西,Redis是好的--它们本质上都是一样简单的。
发布于 2013-02-02 10:49:44
您要求从框架中获得很多东西;网络启用,多平台,多语言,高性能(理想情况下应该进一步说明--带宽意味着什么?潜伏期?什么是“足够好”;我们是说kB/s,MB/s,GB/s,1ms还是1000 ms往返?)此外,还有很多没有提到的事情可以很容易地发挥作用,例如您需要身份验证还是加密?有些框架为您提供了这样的功能,而另一些框架则依赖于自己实现这部分难题。
有可能没有银弹产品,这将给您一个理想的解决方案,以优化所有这些需求在同一时间。至于您问题的“附加”组件--是的,如果您仅将语言需求限制在python上,或者进一步区分键和好的拥有需求,那么将会有更多的解决方案可用。
您可能想看看的一种技术是维亚斯蒂Python (完全公开:我是开发人员之一)。它是多平台的,支持pythonv2.6+/v3和java SE6+。关于性能,这取决于您的需求。如果您对这项技术有任何疑问,只需在论坛上询问即可。
https://stackoverflow.com/questions/14659789
复制相似问题