博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python调用C程序
阅读量:4189 次
发布时间:2019-05-26

本文共 847 字,大约阅读时间需要 2 分钟。

目录


 

Python调用C程序的意义

我们知道,Python具有编写开发快、程序可读性良好、支持面向对象的特点。种类繁多的Python原生库和第三方框架使Python承担越来越多的任务。但是Python自身的缺陷也确实是Python开发者要面对的问题:受制于动态语言的影响,Python的运行速度还是不能与静态语言媲美;Python的多线程受制于GIL锁的影响,无法实现真正意义上的并发...... 但是Python的这些“致命”缺陷可以通过C语言来弥补,Python原生包支持调用C语言的逻辑。于是,一个Python和C“强强联合”的方式诞生了,我们可以发挥两种语言各自的优势来构建一个强大的应用程序:发挥Python的面向对象特点来编码,充分利用Python特点来处理IO密集型作业,而使用C语言来处理计算密集型作业。

 

调用示例

在这一章节里,我们一步步构建Python是如何调用C代码的逻辑。推荐顺序阅读。

 

编写C程序

我们采用自底向上的顺序构建演示逻辑。我们编写一个简单的C语言代码,来计算两个整型数字的和,并把结果返回:

【add.c】

#include
int add(int number1, int number2) { return number1 + number2;}

 

编译C程序

使用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/

你可能感兴趣的文章
Linux上chown命令的高级用法
查看>>
利用sort对多字段排序
查看>>
Windows 10完美识别3TB硬盘实录
查看>>
在CentOS 6.x上安装luajit 2.0.4
查看>>
Linux下使用diff和patch制作及打补丁(已经实践可行!)
查看>>
ThinkPad T420更换SSD实录
查看>>
在Ubuntu 16.04.1 LTS上安装ats 5.3.2
查看>>
在CentOS 6.8 x86_64上安装ATS 6.2.1实录
查看>>
在CentOS 6.9 x86_64上玩转OpenResty 1.13.6.1中的resty-cli模块
查看>>
Spring中的Bean是有生命周期
查看>>
FreeMarker是一个用Java语言编写的模板引擎
查看>>
Markdown的语法简洁明
查看>>
hadoop的部署总共有3种类型
查看>>
部署安装hadoop
查看>>
sqoop是什么
查看>>
使用eclipse来调试hadoop作业是非常简洁方便的,
查看>>
配置sqoop的环境变量
查看>>
Optional类包含的方法
查看>>
如何使用MR来读取数据库的数据,并写入HDFS上
查看>>
mapred-site.xml里面配置运行日志的输出目录
查看>>