【Python】调用C语言

简介: 【Python】调用C语言

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

1684131794758.jpg

可以看到;so、dll文件都可在windows环境下供python使用。并且可以看到上述Demo中,C的速度比Python快近20倍。

我个人比较喜欢Python+C混合编程这种方式,原因主要有几点:

1、提高性能,弥补了python性能上的不足。

2、相对安全,对dll文件或so文件进行加密,有效防止逆解析保证代码安全。

3、结合Python强大的生态环境,也满足了高效快速的开发。

相关文章
|
8月前
|
编译器 Linux C语言
python C语言扩展之简单扩展-使用ctypes访问C代码
python C语言扩展之简单扩展-使用ctypes访问C代码
62 0
|
8月前
|
算法 编译器 C语言
C语言猜数字小游戏(也包含python实现的用法)
本文基于VS2022、pycharm和前面的知识,写一个凭借分支与循环的小游戏,比如: 写一个猜数字游戏 游戏要求: 电脑自动生成1~100的随机数 玩家猜数字,猜数的过程中,根据猜测数据的大小给出大了或小了的反馈,直到猜对,游戏结束 在pyhton中生成随机数是比较简单的,可以直接导入random的包,直接生成随机数,导致写猜数字小游戏变成了判读语句和循环语句嵌套就能写出来,所以我不做过多的介绍了,可以直接看后面的代码展示,想了解更多的python可看python的基础知识,这里面有我在学习python的过程中写的笔记
108 0
|
4月前
|
Unix 编译器 Shell
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
本文回顾了计算机语言与操作系统的起源,探讨了早期 Unix 操作系统及其与 C 语言的相互促进发展。Unix 最初用汇编语言编写,运行在 PDP-7 上,后来 Thompson 和 Ritchie 开发了 C 语言及编译器,使 Unix 重写并成功编译。1974 年 Ritchie 发表论文,Unix 开始被学术界关注,并逐渐普及。伯克利分校也在此过程中发挥了重要作用,推动了 Unix 和 C 语言的广泛传播。
76 9
[oeasy]python0033_先有操作系统还是先有编程语言_c语言是怎么来的
|
23天前
|
Unix 编译器 C语言
[oeasy]python052_[系统开发语言为什么默认是c语言
本文介绍了C语言为何成为系统开发的首选语言,从其诞生背景、发展历史及特点进行阐述。C语言源于贝尔实验室,与Unix操作系统相互促进,因其简洁、高效、跨平台等特性,逐渐成为主流。文章还提及了C语言的学习资料及其对编程文化的影响。
25 5
|
3月前
|
机器学习/深度学习 物联网 数据处理
C语言用于物联网更合适还是python
选择 C 语言还是 Python 作为物联网(IoT)开发的语言取决于多个因素,包括项目的性质、资源限制、性能需求以及开发团队的技能水平。C 语言性能优越,适合资源受限的嵌入式设备,能直接访问硬件,广泛应用于底层开发,但开发复杂且容易出错。Python 则以其简单的语法和丰富的库支持快速开发和原型制作,适合跨平台应用和数据处理,但性能较低,资源占用较大。根据项目需求,性能和资源要求高时选择 C 语言,需快速开发和易于维护时选择 Python。
|
5月前
|
JSON C语言 数据格式
Python导出隐马尔科夫模型参数到JSON文件C语言读取
Python导出隐马尔科夫模型参数到JSON文件C语言读取
42 1
|
8月前
|
安全 Java C语言
【Python 的内存管理机制专栏】Python 内存管理机制与底层实现:C 语言视角的剖析
【5月更文挑战第18天】Python的内存管理涉及对象分配、引用计数和垃圾回收。对象分配类似C的动态内存,但更自动化。引用计数跟踪对象引用,计数为0时回收。垃圾回收机制自动清理不再使用的对象,避免内存泄漏。这种高效自动化管理让开发者能专注于业务逻辑,而底层实现的理解有助于解决特殊问题和优化性能。
190 4
【Python 的内存管理机制专栏】Python 内存管理机制与底层实现:C 语言视角的剖析
|
C语言 Python
python转c语言流程整理
python转c语言流程整理
139 0
|
8月前
|
机器学习/深度学习 人工智能 Java
学习Python语言好还是C语言好
学习Python语言好还是C语言好
55 0
|
8月前
|
存储 C语言 C++
没学C++,如何从C语言丝滑过度到python【python基础万字详解】
没学C++,如何从C语言丝滑过度到python【python基础万字详解】