栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

〈详解〉Python3调用C程序

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

〈详解〉Python3调用C程序

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 timefrom 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

#includevoid 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_add.py

import timedef 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()




转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/221816.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号