本文共 847 字,大约阅读时间需要 2 分钟。
目录
我们知道,Python具有编写开发快、程序可读性良好、支持面向对象的特点。种类繁多的Python原生库和第三方框架使Python承担越来越多的任务。但是Python自身的缺陷也确实是Python开发者要面对的问题:受制于动态语言的影响,Python的运行速度还是不能与静态语言媲美;Python的多线程受制于GIL锁的影响,无法实现真正意义上的并发...... 但是Python的这些“致命”缺陷可以通过C语言来弥补,Python原生包支持调用C语言的逻辑。于是,一个Python和C“强强联合”的方式诞生了,我们可以发挥两种语言各自的优势来构建一个强大的应用程序:发挥Python的面向对象特点来编码,充分利用Python特点来处理IO密集型作业,而使用C语言来处理计算密集型作业。
在这一章节里,我们一步步构建Python是如何调用C代码的逻辑。推荐顺序阅读。
我们采用自底向上的顺序构建演示逻辑。我们编写一个简单的C语言代码,来计算两个整型数字的和,并把结果返回:
【add.c】
#includeint add(int number1, int number2) { return number1 + number2;}
使用gcc编译c代码:
gcc add.c -shared -o add.so
我们将add.c编译后生成add.so文件。
使用Python的ctypes库调用编译好的so文件即可:
from ctypes import *# gcc add.c -shared -o add.soif __name__ == '__main__': model = cdll.LoadLibrary("./add.so") result = model.add(1, 5) print("result:", result)
运行结果:
result: 6
转载地址:http://vcsoi.baihongyu.com/