在M1实现Python调用GO动态链接库
本文最后更新于:2022年7月9日 凌晨
前言
众所周知,Python作为一门解释性语言,在面对CPU密集型任务时的运行效率一直收到诟病。而Go语言在同样任务的情况下,效率甚至可以达到Python的几十倍。但Python的开发效率是比Go高的,那么有没有一种方法可以结合Python的开发效率和Go的运行效率呢?有,那就是用Python调用Go的动态链接库。
开始
首先我们先编写Go的代码
以斐波那契数列为例
1 |
|
首先需要引入’C’这个模块
接着我们通过递归的方式实现了’fibonacci’这个函数,需要注意的是,函数上方的注释不能省略。
接着需要添加一个main函数,不需要具体的实现代码。
编译Go代码
1 |
|
-o 后面跟着的编译后文件名
最后一个参数是go代码文件名
需要注意的是,在编译前先确定你的Python版本。我之前就因为安装的x86Python,但是Go编译成了ARM版本,导致一直无法调用。
编写Python代码
1 |
|
Python的代码很简单,先导入cdll,然后加载上一步编译的.so文件。
接着就可以直接调用fibonacci函数了。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!