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

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