Python调用C语言

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

首先把文件.c转换成.dll或者.so。
Windows下Demo亲测一波,话不多说,上图上代码。
foo.c:

# include<stdio.h>int foo(){int i,k,m;for(i=0;i<1000;i++){for(k=0;k<1000;k++){for(m=0;m<1000;m++)    {}}
}return 0;
}

将C语言代码保存为.c文件。在当前目录下进入cmd。(前提是有mingw环境,很简单,网上很多教程。)执行命令gcc -o foo.so -shared -fPIC foo.c转化为.so文件,gcc foo.c -shared -o foo.dll转化为.dll文件。

python代码

from ctypes import cdll
from time import time#.c-->.so
start=time()
dll=cdll.LoadLibrary('./foo.so')
dll.foo()
print(f'c,so:{time()-start}')#.c-->.dll
start=time()
dll=cdll.LoadLibrary('./foo.dll')
dll.foo()
print(f'c,dll:{time()-start}')#Python
start=time()
for i in  range(1000):for k in range(1000):for m in range(1000):pass
print(f'python:{time()-start}')


可以看到;so、dll文件都可在windows环境下供python使用。并且可以看到上述Demo中,C的速度比Python快近20倍。
我个人比较喜欢Python+C混合编程这种方式,原因主要有几点:
1、提高性能,弥补了python性能上的不足。
2、相对安全,对dll文件或so文件进行加密,有效防止逆解析保证代码安全。
3、结合Python强大的生态环境,也满足了高效快速的开发。

【Python】调用C语言相关推荐

  1. go加载python_python培训 | python调用go语言来提速

    在写一些对性能要求十分严格的功能的时候,python往往力不从心.毕竟是一个解释性的语言,没有办法和变异性的语言去比较速度和内存占用率.但是python的本身的特定就使得我们可以将耗时的操作移交给编译 ...

  2. python调用c语言函数_从Python调用C函数

    python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...

  3. python调用r语言加载包错误_Python调用R语言

    网络上经常看到有人问数据分析是学习Python好还是R语言好,还有一些争论Python好还是R好的文章.每次看到这样的文章我都会想到李舰和肖凯的<数据科学中的R语言>,书中一直强调,工具不 ...

  4. python调用c语言内核计算,在Linux上实现Python调用C语言函数

    一般思路 Python中内置ctypes库,需调用c编译成的.so文件来实现函数调用. 假设我们所需调用的c文件名为test.c,文件里有我们需要的函数func(x,y). 将.c文件编译成 .so文 ...

  5. python调用C语言动态链接库详解

    python调用动态链接库详解 Python 调用动态链接库 环境说明 构建动态链接库 python动态链接库基础调用 python动态链接库结构体调用 python动态链接库回调函数 本文介绍在li ...

  6. Python调用C语言(DLL)

    前言:本文可结合Python调用C++语言(DLL)使用,效果更佳. 采用导出形式:__declspec(dllexport) 功能 无参数,无返回类型 有参数,有返回值 [不需要修改参数数值] 有参 ...

  7. C语言第五篇 python调用C语言写的动态链接库DLL文件

    学习目标:1.学会C语言写windows下的DLL文件.2.用gcc命令将C程序编译成DLL文件.3.学会用python调用C语言写的DLL. 学习内容1:先用C语言写一个简单程序,先建立dll.c文 ...

  8. python 调用 C语言函数

    python可以直接调用C语言的函数,本文记录用ctypes调用c语言的方法. test.c #include <stdio.h>int test(char *temp) {printf( ...

  9. python调用C语言函数(方法)的几种方法

    1. 使用ctypes 可能是Python调用C方法中最简单的一种 2. 使用SWIG 是Python中调用C代码的另一种方法.在这个方法中,开发人员必须编写一个额外的接口文件来作为SWIG的入口. ...

  10. Python调用C语言

    Python中的ctypes模块可能是Python调用C方法中最简单的一种.ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此在调用时不需对源文件做任何的修改.也正是如此奠定了这 ...

最新文章

  1. MRI原理谁都看得懂版
  2. I​n​n​o​ ​s​e​t​u​p​ ​常​用​修​改​技​巧
  3. 数据挖掘导论读书笔记1
  4. 缓存、内存、硬盘、虚拟硬盘
  5. 登录服务器修改数据库吗,如何修改服务器登录数据库 sa
  6. 实战java虚拟机 百度云_《实战JAVA虚拟机 JVM故障诊断与性能优化》pdf百度云下载...
  7. php : 收集整理的非常有用的函数
  8. oracle vfp,VFP如何连SQL Server及Oracle
  9. 个人免签支付系统源码插件资源汇总
  10. 建模方法(四)-因子分析定义和应用
  11. Kotlin-三目表达式Kotlin版
  12. linux kvm usb设备,KVM虚拟机上关于宿主机的USB设备使用问题探究
  13. linux里rw文件如何打开,RW 文件扩展名: 它是什么以及如何打开它?
  14. 数字图像处理|Matlab-数字图像编码实验-无损编码/压缩算法实验-实现行程编码压缩, 计算原图和压缩以后的尺寸,计算压缩率并比较分析
  15. 嵌入式准备 -- git、VSvode
  16. 分享通过tensorflow证书考试的经验
  17. 有12个苹果,其中一个苹果只有质量与其他苹果不一样,现要求用天平秤3次,找出与其他苹果不一样的那个苹果。
  18. 《数学之美(第一版)》笔记整理 —— 目录
  19. 项目管理,用SAP还是8thManage?
  20. 流式布局java_Java_流式布局、边框布局以及网格布局

热门文章

  1. 【信息安全】-- 知识点
  2. 关于虚拟机黑屏的问题,解决了我长大三个月的烦恼
  3. JS替换自定义表情图片代码
  4. WAP网站开发和部署配置
  5. 初中计算机课标考试,2019年初中信息技术新课标测试试题
  6. 魅蓝e显示无服务器,魅蓝E手机驱动
  7. 基于JSP的网上银行系统开发与设计
  8. 微积分(第三版)经济应用数学基础(一) 赵树嫄 编 中国人民大学出版社
  9. 20222948 2022-2023-2 《网络攻防实践》第2周作业
  10. 相机存储卡数据恢复怎么操作?数据恢复的图文教程来啦!