七牛golang python绑定包需要改进的三个方面

七牛golang python绑定包需要改进的三个方面

七牛在github上贡献的包:"github.com/qiniu/py” ,非常好用,网上赞誉也很多,不拍了,这里说一下需要改进的三个方面。

1、 在golang中无法以函数名直接调用python代码中的单个函数。

code, err := py.Compile(py_code_source, "", py.FileInput) 
…. 
mod, err := py.ExecCodeModule("testww", code.Obj()) 
…. 

只能用以上方式调用一个python代码块。当然代码块中可以只写一个函数名。

2、python 可以调用 golang 的函数,但golang的返回值,python无法取得。

即: 用

gomod, err := py.NewGoModule("foo", "", new(FooModule))定义一个foo的package供python使用 
#
import foo 
return_value = foo.bar(1, ‘hello’) 
print return_value 

打印return_value 是None,这一点需要改进

3、如果在python调用golang的方法中包含:全局chan ,如果这个golang函数 <- 写入数据将导致block。

全局:

var msgs = make(chan string) 
func (r *FooModule) Py_bar(args *py.Tuple) (ret *py.Base, err error) { 
…. 
msgs <- “block code [HERE][1] ! " 
…. 
}  

共 0 个回复