緣起
眾所周知,cpython的GIL鎖造成了多核CPU的使用不便,golang設計上就為多核處理器精心設計了
goroutines
和
channels
,從而可以極其方便的使用多核處理器進行工作.新發布的go 1.9的運行效率go vs c在pidigits運算上僅比c語言慢17%,比c++慢8%.
,還有更重要的一點是,好的c/c++程序設計者是很稀少的,而得益于golang強制的
go fmt
,有編程經驗的新手接觸golang兩個星期就能能成為很有效率的gopher.而python在數據處理的應用上如此廣泛,因此,使用python調用golang就成了一個非常有效的途徑來賦給python方便利用多核cpu的能力(想想128核cpu),加快python程序的運行.
接下來,我將介紹幾種調用方法,并簡單進行一下這些方法之間的橫向比較.主要參考了
building python modules with go 1.5
使用go buildmode
package main
import "C"
// Add add a+b
func Add(a, b int) int {
sum := make(chan int)
go func() {
sum <- a + b
}()
c := <-sum
return c
}
func main() {}
目標是在python中調用這個
Add
方法得到和,
- 查看 buildmode help
$ go help buildmode
- 編譯
$ go build -buildmode=c-shared -o sum.so go_plus.go
$ ls -sh|grep sum
得到這個sum.so有1.3M
python環境是3.5.3
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
