首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高效Python IPC

高效Python IPC
EN

Stack Overflow用户
提问于 2013-02-02 07:43:50
回答 5查看 10.7K关注 0票数 8

我正在用Python3开发一个应用程序,它将分为batchgui两个部分。Batch负责处理逻辑,gui负责显示逻辑。

我应该在以下需求中使用哪个进程间通信(IPC)框架:

  1. GUI可以在批处理以外的其他设备上运行(GUI可以在同一设备上运行,在智能手机、平板电脑等上运行,也可以在本地或网络上运行)。
  2. 批处理(Python3 IPc库)在Linux、Mac、IPc、.
  3. IPC应该支持用不同语言编写的GUI (Python、Javascript、.)
  4. IPC的性能是很重要的--它应该尽可能“交互”,但不丢失信息。
  5. 几个GUI可以连接到同一批。

附加:如果也保证用Python编写,那么的选择会是其他的吗?

编辑:--我发现了很多IPC库,比如这里:高效的Python到PythonActiveMQ或RabbitMQ或ZeroMQ或

到目前为止,我发现的最佳选择是:

  • 狂犬病
  • 零q
  • 吡咯

他们适合这个问题吗?如果不是为什么?如果有什么更好的,请告诉我为什么。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-02-02 11:22:40

你提到的这三个看起来很合适,并且会支持你的要求。我认为你应该继续做你觉得最舒服的事情。

根据我个人的经验,我认为ZeroMQ是效率、易用性和互操作性的最佳组合。我很容易将ZMQ2.2与Python2.7集成在一起,所以这将是我个人的最爱。但是,正如我所说的,我确信您不会在所有3种框架中出错。

半相关:需求往往会随着时间的推移而变化,您可能会决定稍后切换框架,因此封装对框架的依赖将是一种很好的设计模式。(例如,拥有一个与框架交互并使其API使用内部数据结构和域语言的管道模块)

票数 10
EN

Stack Overflow用户

发布于 2013-09-08 20:47:20

我用过Redis引擎来完成这个任务。极端简单轻量级

服务器端做:

代码语言:javascript
复制
import redis
r = redis.Redis() # Init
r.subscribe(['mychannel']) # Subscribe to "channel"
for x in r.listen():
  print "I got message",x

客户方可以:

代码语言:javascript
复制
import redis
r = redis.Redis() # Init
r.publish('mychannel',mymessage)

“消息”是字符串(任意大小)。如果您需要传递复杂的数据结构,我喜欢使用json.loads和json.dumps在python /数组和字符串之间进行转换--对于python通信来说,“泡菜”也许是更好的方法,尽管JSON的意思是“另一面”可以写在任何东西中。

现在还有10亿种其他的东西,Redis是好的--它们本质上都是一样简单的。

票数 8
EN

Stack Overflow用户

发布于 2013-02-02 10:49:44

您要求从框架中获得很多东西;网络启用,多平台,多语言,高性能(理想情况下应该进一步说明--带宽意味着什么?潜伏期?什么是“足够好”;我们是说kB/s,MB/s,GB/s,1ms还是1000 ms往返?)此外,还有很多没有提到的事情可以很容易地发挥作用,例如您需要身份验证还是加密?有些框架为您提供了这样的功能,而另一些框架则依赖于自己实现这部分难题。

有可能没有银弹产品,这将给您一个理想的解决方案,以优化所有这些需求在同一时间。至于您问题的“附加”组件--是的,如果您仅将语言需求限制在python上,或者进一步区分键和好的拥有需求,那么将会有更多的解决方案可用。

您可能想看看的一种技术是维亚斯蒂Python (完全公开:我是开发人员之一)。它是多平台的,支持pythonv2.6+/v3和java SE6+。关于性能,这取决于您的需求。如果您对这项技术有任何疑问,只需在论坛上询问即可。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14659789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档