何番煎じかわからないが、Golangで書いたパッケージをPython(多言語)から利用
##1.構成
Python : 2.7
Golang : 1.7
OS : CentOS release 6.8
Memory : 2048MB
CPU : 3core
PythonLibrary
ctypes
##2. 準備
fib.go
package main
import "C"
//export fib
func fib(n uint) uint {
if n <= 1 {
return n
}
return fib(n-1) + fib(n-2)
}
func main() {}
build
go build -o fib.so -buildmode=c-shared fib.go
fib_go.py
from ctypes import *
lib = cdll.LoadLibrary("./fib.so")
## arg
lib.fib.argtypes = [c_longlong]
## return
lib.fib.restype = c_longlong
print "fib %d" % lib.fib(40)
fib.py
#!/usr/bin/env python
def fib(n):
if n <= 1:
return n
else:
return fib(n-1) + fib(n-2)
print(fib(40))
##3.計測
fib_go.py
#time python fib_go.py
fib 102334155
real 0m1.171s
user 0m1.105s
sys 0m0.071s
fib.py
#time python fib_go.py
102334155
real 0m46.598s
user 0m46.449s
sys 0m0.030s