Ching-Chuan Chen's Blogger

Statistics, Machine Learning and Programming

0%

Python Call Golang

Golang的速度極快,而且Go可以直接編譯成shared library

直接就譨讓Python使用ctypes載入,就能使用了

事先需求:

  1. 安裝好Go (版本>=1.5),而且Go要在環境變數裡(執行go -v要有東西XD)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package main

import "C"
import "fmt"

// 匯出printBye method
//Export printBye
func printBye() {
fmt.Println("From DLL: Bye!")
}

// 匯出 sum method
//Export sum
func sum(a int, b int) int {
return a + b;
}

func main() {} // 一定要有

然後就可以執行下面兩行Python來編譯成shared library檔案

1
2
import os
os.system("go build -buildmode=c-shared -o libtest.dll test.go")

就可以在你的目錄下看到libtest.dll了,就載入後,就能使用裡面的method了

1
2
3
4
5
import ctypes
test = ctypes.cdll.LoadLibrary("libtest.dll")

test.printBye()
test.sum(1, 2)