2013-12-19 29 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代碼。)

相關問題