北京

[切换城市]

Numba如何进行使用呢?老男孩Python开发

2021-02-26 发布
区     域:昌平
联 系 人:任老师
联系电话:18710030740
( 联系我的时候请说是在 轻信息网 上看到的 北京电脑技能培训信息,谢谢! )
  Numba,一款可以让Python函数编译为机器代码的JIT编译器,它可以加速Python运行,想必很多人对它都十分感兴趣,接下来我们就来看看吧。

  Numba是什么?

  Numba是一个库,可以在运行时将Python代码编译为本地机器指令,而不会强制大幅度的改变普通的Python代码(稍后再做说明)。翻译/魔术是使用LLVM编译器完成的,该编译器是相当活跃的开源社区开发的。

  Numba最初是由Continuum **ytics内部开发,此公司也开发了著名的Anaconda,但现在它是开源的。核心应用领域是math-heavy(密集数学?重型数学?)和array-oriented(面向数组)的功能,它们在本地Python中相当缓慢。想象一下,在Python中编写一个模块,必须一个元素接着一个元素的循环遍历一个非常大的数组来执行一些计算,而不能使用向量操作来重写。这是很不好的主意,是吧?所以“通常”这类库函数是用C / C ++或Fortran编写的,编译后,在Python中作为外部库使用。Numba这类函数也可以写在普通的Python模块中,而且运行速度的差别正在逐渐缩小。

  如何使用Numba呢?

  使用它的要求不多。基本上,你写一个自己的“普通”的Python函数,然后给函数定义添加一个装饰(如果你不是很熟悉装饰器,读一下关于this或that)。你可以使用不同类型的装饰器,但@jit可能是刚开始的选择之一。其他装饰器可用于例如创建numpy通用功能@vectorize或编写将在CUDA GPU上执行的代码@cuda。在本文中暂时不介绍这些装饰。现在,让我们来看看基本的步骤。他们提供的代码示例是2d数组的求和函数,以下是代码:

  from numba import jit

  from numpy import arange

  # jit decorator tells Numba to compile this function.# The argument types will be inferred by Numba when function is called.

  @jit

  def sum2d(arr):

  M, N = arr.shape

  result = 0.0

  for i in range(M):

  for j in range(N):

  result += arr[i,j]

  return result

  a = arange(9).reshape(3,3)

  print(sum2d(a))

  正如你所看到的,Numba装饰器被添加到函数定义中,并且voilá这个函数将运行得很快。但是,这里带来了很有趣的注意事项:你只能使用Numpy和标准库里的函数来加快Numba速度,甚至不需要开了他们所有的特性。他们有一个相当好的文档(参考资料),列出了所有支持的内容。见here是所支持Python的功能和here 是所支持的Numpy功能。现在支持的功能可能还不太多,但我想告诉你,这就够了!请记住,Numba不是要加快你的数据库查询或如何强化图像处理功能。他们的目标是加快面向数组的计算,我们可以使用它们库中提供的函数来解决。

温馨提示:Numba如何进行使用呢?老男孩Python开发信息由轻信息网网友发布,其真实性及合法性由发布人负责。轻信息网仅引用以供用户参考。详情请阅读轻信息网免责条款。

北京电脑技能培训 - 相关类别: 北京家教老师 北京才艺培训 北京技术培训 北京乐器培训 北京出国留学移民培训 北京婴幼儿教育 北京职业培训 北京中小学教育培训 北京英语外语培训 北京电脑技能培训 北京学历提升教育培训 北京管理MBA培训 北京考驾照驾校培训 北京特殊技能培训
电脑技能培训 - 热门城市: 北京电脑技能培训 上海电脑技能培训 广州电脑技能培训 深圳电脑技能培训 成都电脑技能培训 杭州电脑技能培训 南京电脑技能培训 天津电脑技能培训 武汉电脑技能培训 重庆电脑技能培训 西安电脑技能培训 郑州电脑技能培训 长沙电脑技能培训 哈尔滨电脑技能培训 沈阳电脑技能培训 苏州电脑技能培训 石家庄电脑技能培训 大连电脑技能培训 青岛电脑技能培训 济南电脑技能培训 太原电脑技能培训 福州电脑技能培训 扬州电脑技能培训 合肥电脑技能培训 东莞电脑技能培训 烟台电脑技能培训 淄博电脑技能培训 厦门电脑技能培训 南昌电脑技能培训 宁波电脑技能培训 邯郸电脑技能培训