如何在python中调用c语言
最近写了一个如何求矩阵的特征值的代码,发现python的运行速度是真的慢。并且python的语言特点,源代码可以说是暴露在所有人面前,这样子对于以后的一些开发肯定是不行的。于是就萌生了在python中使用c语言。做到快速且私密。
我们在Python中可以使用ctypes库来达到这个目的,那么我们可以先写出一个c语言代码。
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文件
from ctypes import *
ADD = CDLL(".so文件路径")
print(ADD.ADD(10))
运行结果
虽然成功,但是现在需要验证一下之前所要达到的目的
我们先把Python的代码更改一下,引入time库,并且循环100次
其运行结果为
之后编写一段与c语言功能一致的python代码
运行结果
可以看见使用c语言在编写大量的运算时是优于python的,并且生成的.so文件其他人无法看见源码,保证了算法的私密。
但是当更改c语言为
运行相应的python文件
将会报类型错误
这里应该注意的是python中有些类型与c语言并不同,所以需要做相应的更改