说道现在最流行的语言,就不得不提python。可是python虽然容易上手,但速度却有点感人。如何用简单的方法让python加速到近乎可以媲美C的速度呢?

今天来就来谈谈numba这个宝贝。对你没看错,不是numpy,就是numba。(推荐学习:Python视频教程)

numba是Python的即时编译器,它最适用于使用NumPy数组和函数以及循环的代码。使用Numba的最常用方法是通过其装饰器集合,可以应用于您的函数来指示Numba编译它们。当调用Numba修饰函数时,它被编译为机器代码“及时”执行,并且您的全部或部分代码随后可以以本机机器代码速度运行!

在面对一个计算project的时候,我们最容易想到的就是直接码代码,最后写出一个超长的程序。这样一来,一旦出错往往就需要花很多时间定位问题。

有一个简单的办法解决这个问题,就是定义各种各样的函数,把任务分解成很多小部分。因为每个函数都不是特别复杂,并且在写好的时候就可以随时检查,因此简洁的主程序一旦出问题就很容易定位并解决。面向对象编程的思想就是基于函数。

写好函数之后,还可以使用装饰器(decorator)让它变得强大。装饰器本身是一个函数,不过是函数的函数,目的是增加函数的功能。比如首先定义一个输出当前时间的函数,再定义一个规定时间格式的函数,把后一个函数作用在前一个函数上,就是一个装饰器,作用是用特定格式输出当前时间。

>Numba的优势

1.简单,往往只要1行代码就有惊喜;

2.对循环(loop)有奇效,而往往在科学计算中限制python速度的就是loop;

3.兼容常用的科学计算包,如numpy、cmath等;

4.可以创建ufunc;

5.会自动调整精度,保证准确性。

如何使用numba

针对上面提到的numba的优势,我来进行逐一介绍。首先导入numba import numba as nb

只用1行代码即可加速,对loop有奇效

因为numba内置的函数本身是个装饰器,所以只要在自己定义好的函数前面加个@nb.jit()就行,简单上手。下面以一个求和函数为例 # 用numba加速的求和函数@nb.jit()def nb_sum(a): Sum = 0 for i in range(len(a)): Sum += a[i] return Sum# 没用numba加速的求和函数def py_sum(a): Sum = 0 for i in range(len(a)): Sum += a[i] return Sum

来测试一下速度 import numpy as npa = np.linspace(0,100,100) # 创建一个长度为100的数组%timeit np.sum(a) # numpy自带的求和函数%timeit sum(a) # python自带的求和函数%timeit nb_sum(a) # numba加速的求和函数%timeit py_sum(a) # 没加速的求和函数

更多Python相关技术文章,请访问Python教程栏目进行学习!

python做后端速度慢吗_【后端开发】python如何提高运行速度相关推荐

  1. 用python做一个舆情分析系统_如何用Python做舆情时间序列可视化?

    如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧. 痛点 你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价.从前,你苦恼的是顾客不爱写评价.最 ...

  2. 用python做我的世界代码_从零开始用Python做一个Minecraft成就(进度)生成器

    最近看到mcmod百科上有个叫成就生成器的东西,于是也想用Python做一个. 大致思路: 一张成就图像,需要有底图,图标和和说明文字三个部分. 成就的图标比较难搞,我使用的是Minecraft Wi ...

  3. python做线性回归统计推断提取参数_线性回归及其Python实现(最大似然法)

    线性回归及其Python实现(最大似然法) 标签: Python 机器学习 本节内容总结于博主在牛客网机器学习特训营的笔记 参考资料:<机器学习实战> 目录 1.什么是线性回归(Linea ...

  4. 用python做股票量化分析豆瓣_小白学 Python 爬虫(24):2019 豆瓣电影排行

    人生苦短,我用 Python 前文传送门: 引言 从本篇的标题各位同学应该已经猜到了,本篇又到了实战环节~~~ 2019 已经快过完了,按照本文推送的时间预估,到 2020 应该还有十来天的时间,又到 ...

  5. python做一个单项选择题系统_(完整版)python选择题word打印版

    Python 单选题库 一. python 语法基础 1 . Python 3.x 版本的保留字总数是 A.27 B.29 C.33 D.16 2. 语言保留字的是 Python 不是 , 以下选项中 ...

  6. 用python做思维导图软件_分享一下python数据处理工具思维导图

    声明:内容来自博主亲手制作,转发请先通知. Numpy: Numpy优势 内存存储风格 ndarray在中存储的是相同格式的数据 并行化运算 底层是C语言实现 ndarray属性 形状 类型 基本操作 ...

  7. python是什么语言汇编语言吗-python语言属于汇编语言吗?_后端开发

    c语言主函数名是什么?_后端开发 C语言主函数名是main,main函数又称主函数,是程序执行的起点,如果有其他函数,则完成对其他函数的调用后再返回到主函数,最后由main函数结束整个程序. pyth ...

  8. python后端框架有哪些_后端框架有哪些?五款优秀的web开源后端框架推荐

    作为一个web开发人员,下面五款优秀的开源框架一定要了解一下. PHP篇 作为全球最好的web开发编程语言,PHP的框架非常多.下面重点介绍2款: Laravel https://laravel.co ...

  9. python做爬虫 怎么样效率最高_公认8个效率最高的爬虫框架

    一些较为高效的Python爬虫框架.分享给大家. 1.Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中 ...

  10. 用python可以做哪些有趣的事_可以用 Python 来干些什么有趣的事?

    下载视频?我用Python:玩跳一跳?我用Python跳到4999分:撩妹子?依然用Python:抢红包抢火车票?没错还是Python:就算是整理文件,我也还是用Python-- 下面就详细跟大家分享 ...

最新文章

  1. 错误: (串列)对象不能强制改变成'double'解决办法
  2. Cannot open precompiled header file:'Debug/password.pch' No such file or directory
  3. git 忽略文件不起作用
  4. 用WPF山寨折线图,抄?是狠狠的抄
  5. MySQL什么是关系_MySQL教程-关系模型
  6. LS-GAN:把GAN建立在Lipschitz密度上
  7. 多行书写的字符串字面值
  8. shll脚本带参数输入给导出的数据库文件命名以及创造路径
  9. android之module删除不干净
  10. angular中利用zone避归没必要的开销提高程序的性能demo
  11. 电脑小技巧:怎么取消电脑开机密码
  12. 图书借阅系统UML建模
  13. linux打印机无法识别usb设备,linux支持usb打印机,不用驱动
  14. overleaf插入参考文献
  15. Android 调起微信扫一扫
  16. 线性卷积和循环卷积(圆周卷积)
  17. SAP 接口测试操作-顾问
  18. 轻触开关实现自锁功能
  19. scp拷贝文件报错-bash: scp: command not found
  20. Codeforces 605E :Intergalaxy Trips

热门文章

  1. 最适合数据分析师的数据库为什么不是MySQL?
  2. 如何监控 Nginx?
  3. Ubuntu“ System Program Problem Detected”问题
  4. MyBatis多参数传递之默认命名方式示例——MyBatis学习笔记之十二
  5. [转]WebGL中文教程
  6. 中国要做物联网技术的强国,而非大国
  7. zookeeper的zxid
  8. 关于web.xml 中的 welcome-file-list 的认识
  9. matlab GUI 设计
  10. 29.FFmpeg+OpenGLES+OpenSLES播放器实现(三.FFmpeg配置和编译脚本)