〈详解〉Python3调用C程序(内附python教程分享)

〈详解〉Python3调用C程序(内附python教程分享)

胶水语言

python为什么要调用c ?

〈详解〉Python3调用C程序(内附python教程分享)

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);
}

〈详解〉Python3调用C程序(内附python教程分享)

最终文件目录

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学习资料!

〈详解〉Python3调用C程序(内附python教程分享)

pytyhon学习资料

〈详解〉Python3调用C程序(内附python教程分享)

python学习资料

相关推荐