[python3 实用教程]使用ctypes模块调用运行c代码

  • 创建c文件

demo.c:

#include<stdio.h>long my_app(long a){long ret = 0;for(long i=0; i<a; i++){ret += 2;}return(ret);
}
  • gcc生成so文件
gcc demo.c -shared -o lib_app.so
  • 创建python文件
import time
from ctypes import *myso = CDLL("/Users/yss/Demo/python3/ctype_demo/lib_app.so")
ts = time.time()
c = myso.my_app(100000000)
print("time spend ",time.time()-ts,c)def my_add(a):ret = 0for i in range(a):ret += 2return(ret)ts = time.time()
d = my_add(100000000)
print("time spend ",time.time()-ts,d)
  • 运行结果
(base) yansongdeMacBook-Pro:ctype_demo yss$ python3 demo1.py
time spend  0.1458289623260498 200000000
time spend  5.0953381061553955 200000000
  • 结果分析

同样的操作,当我们用C语言来编写的时候,运行速度提升了十倍以上,可见C语言的运行效率之高。以后的开发工作中,如果有大规模的数据运算,建议用C语言编程再利用Python调用。
由此我们也感觉到了Python作为通用语言的强大,可以配合多种语言协同工作。

[python3 实用教程]使用ctypes模块调用运行c代码相关推荐

  1. python调用c函数传字符串参数_Python使用ctypes模块调用DLL函数之传递数值、指针与字符串参数...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  2. c调用python第三方库_Python使用ctypes模块调用DLL函数之C语言数组与numpy数组传递...

    在Python语言中,可以使用ctypes模块调用其它如C++语言编写的动态链接库DLL文件中的函数,在提高软件运行效率的同时,也可以充分利用目前市面上各种第三方的DLL库函数,以扩充Python软件 ...

  3. pyquery获取不到网页完整源代码_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  4. Python3 菜鸟教程 笔记7 -- 模块、输入和输出

    $ 模块(摘要) 传送门:https://www.runoob.com/python3/python3-module.html @ __name__属性 一个模块被另一个程序第一次引入时,其主程序将运 ...

  5. python通过Ctypes 模块 调用C++动态链接库,遇到的access violation reading 0x0000000000000000解决方案

    问题是:通过C++ 程序生成 DLL 内部使用了STL 等模板以及指针和引用.通过ctypes 模块给python 程序调用.有时会报OSError: exception: access violat ...

  6. python pyquery不规则数据的抓取_爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网...

    爬虫神器之PyQuery实用教程(二),50行代码爬取穷游网 前言 上篇文章 PyQuery (一) 回顾.今天来介绍具体 PyQuery 的使用方法. 穷游网目标与分析 开始之前,按照之前的套路一步 ...

  7. 【Python教程】typing模块的作用-提高代码健壮性

    typing模块的作用: 类型检查,防止运行时出现参数和返回值类型不符合. 作为开发文档附加说明,方便使用者调用时传入和返回参数类型. 该模块加入后并不会影响程序的运行,不会报正式的错误,只有提醒. ...

  8. 在IDEA中使用MCR调用运行matlab代码

    安装MCR 注意:MCR需要与打包matlab程序的matllab版本一致.(本次开发使用Matlab R2020b版本) 在Matlab Runtime官网地址下载R2020b的安装包. 解压安装包 ...

  9. 主成分分析用于ERP研究的实用教程-机遇和挑战(附代码)

    摘要 传统的ERP的数据分析方法存在一些严重问题,例如时间窗口和感兴趣区域的随意选取,以及潜在的多成分的混合.时间主成分分析可以有助于解决这些问题,但是它在发展心理学应用中却有一些其他困难,比如年龄差 ...

最新文章

  1. JAVA SE学习day_02:StringBuilder、正则表达式、Object
  2. G6 图可视化引擎——入门教程——插件与工具
  3. centos5.4 64位下安装mysql5.5.14
  4. 教师计算机提升学到的知识,教师计算机教学工作总结(精选6篇)
  5. Mac下启动和停止Mysql服务
  6. 不是所有的程序员都来自匿名区!
  7. iterator [ɪtə'reɪtə] 遍历器
  8. 刘光星- 软件151
  9. Linux命令学习系列-用户切换su,sudo
  10. STM32程序设计(跑马灯)以及STM32原理图绘制(通过ad软件)
  11. 几种常用的网络传输协议
  12. Java聊天室界面代码
  13. 计算机mid函数column,excel中的函数意思=MID($C3,COLUMN(D2)-3,1)
  14. shape (0,) 是什么意思
  15. 适合打游戏的计算机,最适合玩游戏的笔记本电脑 广受好评的三款笔记本
  16. 美式英语口语中连读、略读,音变的技巧
  17. 为什么说串行比并行速度快?
  18. 得到大学夏季开学典礼之后感
  19. Linux文件目录颜色的含义
  20. mingw版本下qt与HTML,QT5.10开发(2) 在Windows 10下使用MinGW编译 静态Qt 5.10 release版 详细过程...

热门文章

  1. 什么是fork()?
  2. 关于美国计算机奥赛USACO,你想知道的都在这
  3. R matrix 取子集
  4. html 自定义 radio 颜色
  5. PHPExcel使用方法
  6. phpexcel-常用命令
  7. python 任务管理引擎_GitHub - Hugh-wong/hydra: python多进程任务引擎
  8. Python写日志文件
  9. 10+31=100小组项目第三周总结报告
  10. 如何解决VMware虚拟机上Windows Server 2003的连网问题