〈详解〉Python3调用C程序(内附python教程分享)
胶水语言
python为什么要调用c ?
c与python对比
python不擅长"大量运算"任务;
python程序优势在于:编写简单,适合"IO密集型作业"(比如打开文件,下载图片,运行脚本).python作为知名的"胶水语言",快速实现"计算密集型作业"的方法就是"把c的代码拿过来直接用"!
python调用c语言代码的方式十分简单,只需四步:
1.将.c后缀的文件编译为动态库文件(.so结尾)
格式
- gcc 原文件名.c -shared -o 新文件名.so
示例
- 以将c_dll.c编译为c_dll.so为例
- gcc c_dll.c -shared -o c_dll.so
2.在python文件中导入头文件
示例
- from ctypes import *
3.在python中引入c动态库,并用变量接收动态库的引用
格式
- 变量名 = cdll.LoadLibrary("动态库文件路径")
示例
- result = cdll.LodaLibrary("./c_dll.so")
4.调用动态库方法
格式
- 动态库引用.库函数(参数)
示例
- result.my_add(num)
附源码:
c_add.py
import time
from ctypes import *
def main():
num = int(input("请输入整数值:"))
result = 0
start_time = time.time()
result = cdll.LoadLibrary("./c_dll.so")
result.my_add(num)
end_time = time.time()
print("总共用时%s"%(end_time-start_time))
if __name__ == "__main__":
main()
c_dll.c
#include<stdio.h> void my_add(int num){ long int result = 0; for (long int i=1; i<=num; i++){ result += i; } printf("从1到%d累加的计算结果为%ld ",num,result); }
最终文件目录
python_add.py
import time def main(): num = int(input("请输入整数值:")) result = 0 start_time = time.time() for i in range(num+1): result += i print("从1到%d累加的计算结果为%d"%(num,result)) end_time = time.time() print("总共用时%s"%(end_time-start_time)) if __name__ == "__main__": main()
最后,想学习Python的小伙伴们!
请关注+私信回复:“学习”就可以拿到一份我为大家准备的Python学习资料!
pytyhon学习资料
python学习资料
相关推荐
猪猪侠喜欢躲猫猫 2020-08-17
快递小可 2020-08-16
chuckchen 2020-10-31
Will0 2020-10-12
Dreamhome 2020-10-09
xirongxudlut 2020-09-28
星辰大海的路上 2020-09-13
chaochao 2020-08-31
shengge0 2020-07-26
巩庆奎 2020-07-21
张文倩数据库学生 2020-07-19
xirongxudlut 2020-07-18
Ericbig 2020-07-18
kyelu 2020-07-09
liangzhouqu 2020-07-07
GuoSir 2020-06-28
chaigang 2020-06-27
pythonxuexi 2020-06-25