因为实验室项目的进度,需要把之前用c写的接口程序转为python。因为c的执行速度更高,所以考虑保持原来的c代码不变,用python直接调用其中的函数。实际中也经常用这样的方法来给python加速,参考博客[1]中就提到了,因为他们的程序中有特别大的双层循环,还有位操作,所以效果明显——加速后C运行速度比python快了1000倍。这就来到了如何在python中调用c/c++代码的问题。
在python和c/c++交互使用中,有以下几个不同方面:
本文的重点在介绍python调用c/c++动态链接库,特别是应用ctypes进行类型转换,包括自己在尝试过程中遇到的问题。其他部分简单介绍并给一些博客链接。
一、 python调用c/c++动态链接库
python调用动态链接库这件事本身浅显易懂。总体就三步:
1、 编写c语言文件
2、 gcc编译生成动态链接库
3、 python导入动态链接库并调用函数
导入ctypes,通过ctypes导入动态链接库。
这样就成功将c嵌入到python中了。
但是问题就来了。我们一般调用的函数不会这么简单的。通常我们都是希望在c中完成复杂的计算,再把结果返回给python。所以我们