位置: 编程技术 - 正文

利用ctypes提高Python的执行速度

编辑:rootadmin

推荐整理分享利用ctypes提高Python的执行速度,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

ctypes是Python的外部函数库。它提供了C兼容的数据类型,并且允许调用动态链接库/共享库中的函数。它可以将这些库包装起来给Python使用。这个引入C语言的接口可以帮助我们做很多事情,比如需要调用C代码的来提高性能的一些小型问题。通过它你可以接入Windows系统上的 kernel.dll 和 msvcrt.dll 动态链接库,以及Linux系统上的 libc.so.6 库。当然你也可以使用自己的编译好的共享库

我们先来看一个简单的例子 我们使用 Python 求 以内素数,重复这个过程次,并计算运行时间。

输出

下面用C语言写一个的 check_prime 函数,然后把它当作共享库(动态链接库)导入

使用以下命令生成 .so (shared object)文件

输出

我们可以看到很明显的性能差距 这里有更多的方法去判断一个数是否是素数

利用ctypes提高Python的执行速度

再来看一个复杂点的例子 快速排序

mylib.c

使用ctypes有一个麻烦点的地方是原生的C代码使用的类型可能跟Python不能明确的对应上来。比如这里什么是Python中的数组?列表?还是 array 模块中的一个数组。所以我们需要进行转换

test.py

输出

与Python list 的 sort 方法进行对比

输出

至于结构体,需要定义一个类,包含相应的字段和类型

除了导入我们自己写的C语言扩展文件,我们还可以直接导入系统提供的库文件,比如linux下c标准库的实现 glibc

输出

总结

标签: 利用ctypes提高Python的执行速度

本文链接地址:https://www.jiuchutong.com/biancheng/385406.html 转载请保留说明!

上一篇:python实现批量监控网站(python批量ping)

下一篇:Python随机数random模块使用指南(python随机数random.choice)

  • 不能从销项税额中抵扣的进项税额都有什么
  • 出口退税调整后退税率包括什么档次
  • 税后净营业利润和净利润的区别
  • 一般纳税人附加税优惠政策2023
  • 滞纳金海关
  • 企业如何加强应收账款的管理
  • 房地产公司固定资产管理制度
  • 接受现金捐赠怎么写分录
  • 捐赠财产
  • 小规模纳税人所得税税率
  • 投资子公司的现金流量
  • 房租转租怎么处理合法
  • 对账状态未对账
  • 用银行存款上交各种税费
  • 企业销售货物收入没有银行流水
  • 工程款支付利息依据
  • 计提公司所得税分录
  • 一般纳税人出租不动产增值税税率
  • 固定资产清理营业外收入交增值税吗
  • 采购比价流程图
  • 旅行社代订机票发票写个人能报销吗
  • 地铁充值发票会透露个人账户信息吗
  • 电子普通发票如何打印
  • 小企业财务报表不包括
  • 个体工商户怎么交社保
  • bitlocker功能
  • 如何激活windows11专业版?
  • 苹果macbook 系统
  • 独享20m网速快吗
  • 误删的文件怎么撤回
  • 政府土地购买流程
  • 怎么登记总分类账簿
  • 公司增资怎么需要什么资料
  • 长期借款资本成本高吗
  • 政府机关出租房屋要交税吗
  • vue项目上线教程
  • 哈士奇新手礼包
  • vite 配置
  • php接收post数据并查询数据库
  • php中实现文件上传需要用到哪几个函数
  • Delete `␍` 最简单最有效的解决方法和解释(VScode)
  • 怎么搭建本地ota
  • username命令
  • python中列表清空
  • 计提票面利息
  • 暂估少了冲销时怎么办
  • phpcms怎么用
  • 什么是企业所得税收入
  • 车辆车船税收费标准
  • 印花税购销合同计税依据
  • 购买的固定资产退回账务处理
  • 哪种发票可以报税
  • 新政府会计固定资产的核算与计量
  • 网上银行回单可以做账吗
  • 收到国税退税收怎么做账
  • 城市生活垃圾处理方式有哪几种
  • 免征企业所得税的有哪些行业
  • Windows10安装包下载
  • 使用Mysql5.x以上版本出现报错#1929 Incorrect datetime value: '''' for column ''createtime''的快速解决方法
  • win7任务管理器怎么打开
  • 趣谈linux系统
  • linux文本模式无法打字
  • windows屏幕上有多个窗口时
  • 服务器双系统怎么安装
  • linux管理员权限命令
  • cocos2dx 3.1.1 win8+eclipse环境下android游戏开发环境搭建
  • python必学的os模块详解
  • Unity3D游戏开发标准教程
  • nodejs基本原理
  • 段正淳算正面人物吗
  • jquery根据name获取对象数组
  • Android -- service两种启动方式startService与bindService
  • 在js里写html
  • Metaio in Unity3d 教学--- 二. 创建自己的Application
  • python web ui
  • 目前光伏太阳能组件产量最高的国家是( )
  • 办理增值税一般纳税人所需资料
  • 手撕发票查询真伪平台
  • 代理记账公司成本怎样结转的
  • 高山白茶和普通白茶的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设