vlambda博客
学习文章列表

如何在python中调用c语言

最近写了一个如何求矩阵的特征值的代码,发现python的运行速度是真的慢。并且python的语言特点,源代码可以说是暴露在所有人面前,这样子对于以后的一些开发肯定是不行的。于是就萌生了在python中使用c语言。做到快速且私密。


我们在Python中可以使用ctypes库来达到这个目的,那么我们可以先写出一个c语言代码。

#include <stdio.h>
int ADD(int n){ int sum; for (int i = 0; i <= n; i++) { sum += i; } return sum; }


用如下命令编译

gcc -fPIC -shared c语言文件名.c -o 动态库名.so(windows为.dll)


产生的结果


没有任何返回就是最好的结果

产生如下.so文件

如何在python中调用c语言


接下来编写Python文件

from ctypes import *
ADD = CDLL(".so文件路径")
print(ADD.ADD(10))


运行结果

如何在python中调用c语言


虽然成功,但是现在需要验证一下之前所要达到的目的


我们先把Python的代码更改一下,引入time库,并且循环100次

如何在python中调用c语言


其运行结果为

如何在python中调用c语言


之后编写一段与c语言功能一致的python代码

如何在python中调用c语言


运行结果

如何在python中调用c语言


可以看见使用c语言在编写大量的运算时是优于python的,并且生成的.so文件其他人无法看见源码,保证了算法的私密。


但是当更改c语言为

如何在python中调用c语言

运行相应的python文件

将会报类型错误


这里应该注意的是python中有些类型与c语言并不同,所以需要做相应的更改