2013-12-19 33 views
0

我一展身手的lib女巫确实对可变数据并行处理,我有一个(简化)接口:是否有可能提供实施Go接口从python

type Handler interface { 
    Accepts(id []byte) bool 
    ProcessUnit(u []byte) []byte 
} 

目前,图书馆的最终开发商(用户)可能会写代码来实现这个接口,并且一个库可以在最终开发者数据结构上工作。

现在真正的问题:(允许跳过开销),是否有可能提供用另一种语言编写的接口的实现(用Python记住)?我的意图是提供一个“插件API”,以便任何人都可以添加处理程序,例如:Python(或其他语言)编写

我已经有一个工作实现女巫使用zeromq来传递数据去- > python,但这感觉“非自然”。我想实现的乌托邦是lib用户将plugins.py文件放置在预定义的位置,并且可以在启动时自动加载插件,这有可能或者我看错了方向?

+0

使用zeromq传递消息是实现进程间通信的完美方式,如果这是您所需要的。你能否详细说明你的乌托邦是什么以及为什么你想实现它以帮助我们理解它? –

+0

我不想避免样板代码/步骤分开开始和停止生产者(python插件)和消费者(去lib) – canni

回答

1

Go没有模块的动态加载(至少在零和一阶近似下),所以不行,你不能只在一个地方放置一个plugins.py并且有一个Go程序加载并使用它,至少不能从Go本身...

...但是你也许可以使用go-蟒蛇https://github.com/sbinet/go-python或goPy https://github.com/qur/gopy这应该允许您运行从围棋Python解释器和Python解释器可以做动态模块加载。 Go和Python之间会出现一些前后矛盾,但应该是可行的。

传递数据左右(无论是zeromq或通过包装网/ RPC也许当导演)似乎并没有“非天然”我...

(旁注:如果有人能写正确的Python代码,并得到了一些帮助理解指针,他应该可以在几天内写入Go代码。)

相关问题