前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快过C语言?!还有这种操作?!

快过C语言?!还有这种操作?!

作者头像
不可言诉的深渊
发布2019-07-26 16:46:04
7480
发布2019-07-26 16:46:04
举报

Python向来都是开发速度最快,运行速度最慢的编程语言,提升速度的办法我之前讲过几种,比如和C语言交互,使用多进程。仅仅靠这两个方法来提高Python性能可是远远不够的!如果和C语言交互,速度确实得到了提升,但是没办法快过C语言。这就好比一个人跑得快,一个人跑得慢,跑得慢的那个人希望自己跑快点,让那位跑得快的拉着他,这样就会出现这种情况,跑得快的人会比他自己一个人跑慢,跑得慢的那个人会比自己一个人跑快。所以和C语言交互这种方式对运行性能的提升十分有限。下面来简单分析一下多进程是不是完美无缺了呢?其实并不是,创建多个进程系统开销远大于一个进程,而且进程太多可能会出现资源不足的情况,严重可能出现系统崩溃!

难道有比C语言还要快的语言和Python交互,然后速度快过C语言?当然有比C语言更快的语言,就是更低级的汇编语言和机器语言。这篇文章就来讲一下Python和机器语言实现交互,让速度快过C语言。实际上可以通过调用os模块中的system函数来执行一个exe文件,这确实是一种方式,但这种方式开发效率太差了,因为要开发出一个比C语言生成的exe可执行程序效率更高的可执行程序不是一般的麻烦。现在我给出一种最简单的Python和机器语言交互的方式,我们可以使用numba模块里面的jit来将耗时的函数翻译成机器码,以提高运行速度!

首先来看一下jit到底是何方神圣。

稍微翻译一下Args上面那句话,这个装饰器被用来把一个Python函数编译成机器码,这个函数好多个参数,我就不一一讲解了,大家自己尝试翻译。

下面我将用求圆周率的例子来进行对比,首先是用jit装饰和不用jit装饰,代码如下:

monte_carlo_pi是使用jit装饰的,carlo_pi是没有使用jit装饰的,下面来看一下运行结果:

快了18倍的样子,如果样本更多可以拉开更大的差距,在这里就不试了,下面我接着和其他语言对比,首先是和C语言对比。C语言代码如下:

运行结果如下:

3秒多,再来看看Python使用jit装饰的情况,同把样本个数设置为10000000,然后看一下运行结果:

比C语言快了大概9倍,确实挺牛逼的!其他语言也就没必要再试了,因为其他语言要么比C语言慢,要么比C语言繁琐。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python机器学习算法说书人 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档