python中调用.c文件生成的so、dll文件
查了一些资料说在windows下调用dll文件、linux下调用so文件。 于是Demo亲测一波,发现windows下都可以调用。话不多说,上图上代码。 C代码
# include<stdio.h>
int foo(){
int i,k,m;
for(i=0;i<1000;i++){
for(k=0;k<1000;k++){
for(m=0;m<1000;m++) {
}
}
}
return 0;
}
将C语言代码保存为.c文件。在当前目录下进入cmd。(前提是有mingw环境,很简单,网上很多教程。)执行命令“gcc -o foo.so -shared -fPIC foo.c”转化为.so文件,"gcc foo.c -shared -o foo.dll"转化 为.dll文件。
python代码
from ctypes import cdll
from time import time
start=time()
dll=cdll.LoadLibrary('./foo.so')
dll.foo()
print(f'c,so:{time()-start}')
start=time()
dll=cdll.LoadLibrary('./foo.dll')
dll.foo()
print(f'c,dll:{time()-start}')
start=time()
for i in range(1000):
for k in range(1000):
for m in range(1000):
pass
print(f'python:{time()-start}')
可以看到;so、dll文件都可在windows环境下供python使用。并且可以看到上述Demo中,C的速度比Python快近20倍。 我个人比较喜欢Python+C混合编程这种方式,原因主要有几点: 1、提高性能,弥补了python性能上的不足。 2、相对安全,对dll文件或so文件进行加密,有效防止逆解析保证代码安全。 3、结合Python强大的生态环境,也满足了高效快速的开发。 欢迎大家对本文章批评指正,可留言,可vx,求关注谢谢!
|