【问题标题】:Using Akka actors to invoke or pass messages to Python code使用 Akka Actor 调用或传递消息给 Python 代码
【发布时间】:2014-05-13 02:34:22
【问题描述】:

我有一些用 Python 编写的分析代码。目前我正在使用 Storm 来处理流。因为 Storm 允许使用消息序列化调用 python 代码,所以我在我的 Storm bolts 中从 Java/Scala 调用 Python 代码。

我找到了Pykka,它是演员模型的 Python 实现。我想知道是否有办法从 Akka 演员调用 Python 代码?例如,是否可以将消息从 Akka 演员传递给 Pykka 演员?

【问题讨论】:

    标签: python scala akka actor pykka


    【解决方案1】:

    我怀疑两个远程参与者模型实现的有线协议是否可以轻松桥接,但您可以在 Scala 代码和 Python 应用程序之间使用0MQ。 Akka 允许message passing over 0MQ,因此经过一些设置后,Scala 代码可以像处理任何其他参与者一样处理 Python 应用程序,尽管我不确定这在 Python 方面意味着什么。

    另一个值得考虑的可能性是使用Jython 在JVM 上运行您的Python 分析代码。您可以让 Scala 演员调用 Jython 函数/方法。但是如果你的 Python 代码使用了 C 扩展模块,你就必须找到替代品。

    另一种可能性(也假设您没有使用 C 扩展模块)是给转换器py2scala 一个尝试;对于数据分析代码,它可能做得不错。据推测,这将为您提供最高效的解决方案。

    【讨论】:

    【解决方案2】:

    您还可以使用Jep 在actor JVM 中运行嵌入的CPython,以完全访问本机(C) Python 包。

    在此处查看幻灯片 5 Mixing Python and Java

    如果您需要的 Python 包不是线程安全的,那么可以使用远程 Akka 演员。 见https://github.com/alpinedatalabs/alpine-r/blob/35209af47f896450e4f8f8745a80595d01035ca3/server/src/main/resources/application.conf#L4

    要使ScalaPython 更流畅,请尝试ScalaPy - 也建立在Jep 之上。

    使用Renjin - GPL 从技术上讲,类似的东西也应该适用于 R,不幸的是,运行嵌入式时必须小心。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-06
      • 1970-01-01
      • 2012-09-02
      • 2015-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多