python3调用C语言代码 - Go语言中文社区

python3调用C语言代码


1. python为什么要调用c ?

在这里插入图片描述
python不擅长"大量运算"任务;
python程序优势在于:编写简单,适合"IO密集型作业"(比如打开文件,下载图片,运行脚本).python作为知名的"胶水语言",快速实现"计算密集型作业"的方法就是"把c的代码拿过来直接用"!

2. python调用c语言代码的方式,只需四步:

2.1 将.c后缀的文件编译为动态库文件(.so结尾)

格式

gcc 原文件名.c -shared -o 新文件名.so

示例

以将c_dll.c编译为c_dll.so为例

gcc c_dll.c -shared -o c_dll.so

2.2 在python文件中导入头文件

示例

from ctypes import *

2.3 在python中引入c动态库,并用变量接收动态库的引用

格式

变量名 = cdll.LoadLibrary(“动态库文件路径”)

示例

result = cdll.LodaLibrary("./c_dll.so")

4.调用动态库方法
格式

动态库引用.库函数(参数)

示例

result.my_add(num)

3.附源码:

  • c_add.py,使用python完成调用C代码完成计算
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, 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累加的计算结果为%ldn",num,result);
}
  • 完全使用python完成计算的代码
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()
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_38923792/article/details/95210227
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢