【教程】在UBUNTU下将PYTHON的FUNCTION编译为.SO动态链接库

【教程】在UBUNTU下将PYTHON的FUNCTION编译为.SO动态链接库

  1. 在PYCHARM里面运行,管他三七28,先写一个main再说
import toBeSo

aa = toBeSo.add(1, 2)

print(aa[0])
print(aa[1])
print[aa]


  1. 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

https://www.cnblogs.com/1a2a/p/10509090.html?tt_from=weixin&utm_source=weixin&utm_medium=toutiao_ios&utm_campaign=client_share&wxshare_count=1

创建一个新的文件命名为
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)


运行即可获得函数的结果在这里插入图片描述

posted @ 2020-12-10 20:14  你看不见我的blog  阅读(34)  评论(0编辑  收藏  举报  来源