使用Akka参与者调用或传递消息到Python-cod

2024-06-08 14:08:32 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我找到了Pykka,它是actor模型的Python实现。我想知道是否有一种方法可以从Akka actors调用Python代码?例如,有没有可能把阿克卡演员的信息传递给皮卡演员?在


Tags: 方法代码模型信息消息序列化actorsjava
2条回答

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

请参见幻灯片5 Mixing Python and Java。在

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

要使ScalaPython更平滑,请尝试^{}-也是在Jep之上构建的。在

从技术上讲,使用^{}-GPL的R也可以使用类似的方法,不幸的是,在运行embedded时必须小心。在

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

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

另一种可能(也假设您没有使用C扩展模块)是尝试一下转换器py2scala;对于数据分析代码,它可能做得不错。想必这会给你最好的解决方案。在

相关问题 更多 >