python golang 小工具_python调用golang的几种方法

本文探讨了通过Go语言提升Python多核CPU利用率的方法。Go的goroutines和channels设计非常适合多核处理器,使得Go程序接近C/C++的性能水平。由于Python的GIL限制,通过Go增强Python程序成为一种可行方案。文章还提供了具体的Go代码示例,并介绍了如何在Python环境中调用Go编写的函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

缘起

众所周知,cpython的GIL锁造成了多核CPU的使用不便,golang设计上就为多核处理器精心设计了goroutines 和channels,从而可以极其方便的使用多核处理器进行工作.新发布的go 1.9的运行效率go vs c在pidigits运算上仅比c语言慢17%,比c++慢8%.

bV0dby?w=607&h=179bV0ddH?w=600&h=158

,还有更重要的一点是,好的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

bV0dmG?w=95&h=15

python环境是3.5.3

有疑问加站长微信联系(非本文作者)

280

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值