【教程】在UBUNTU下将PYTHON的FUNCTION编译为.SO动态链接库
【教程】在UBUNTU下将PYTHON的FUNCTION编译为.SO动态链接库
- 在PYCHARM里面运行,管他三七28,先写一个main再说
import toBeSo
aa = toBeSo.add(1, 2)
print(aa[0])
print(aa[1])
print[aa]
- main里面调用了toBeSo.py文件内的add函数
add函数内容如下
def add(x, y):
# x = 90
# y = 0
arrayLength1 = 1
arrayLength2 = 5
i = 1
out1 = [i for i in range(arrayLength1)]
out2 = [i for i in range(arrayLength2)]
i = 1
for i in range(arrayLength1):
out1[i - 1] = (x + y) * i
i += 1
i = 1
for i in range(arrayLength2):
out2[i - 1] = (x + y) * i * i
i += 1
# print(out1, out2)
return out1, out2
运行后可以获得结果如下
3. 把add函数提取出来编译为.so文件
基本按照连接进行修改
https://blog.csdn.net/qq_41699621/article/details/103596742
创建一个新的文件命名为
setup.py
from distutils.core import setup
from Cython.Build import cythonize
setup(ext_modules = cythonize(["toBeSo.py"]))
打开setup.py所在文件夹,打开终端,在终端内运行
python3 setup.py build_ext --inplace
可以获得名为toBeSo.cpython-36m-x86_64-linux-gnu.so的二进制动态链接库文件(build文件夹内)
删除toBeSo.py,准备调用.so文件
编辑python文件命名为useSo.py
import toBeSo
dd = toBeSo.add(3, 5)
print(dd)
运行即可获得函数的结果