python加速器numba使用详解

作者:_刘文凯_ 时间:2022-02-27 15:24:22 

python的一个加速器包,这里不讲原理,只讲应用过程,以及给出几个小例子,直接写就行了; 另外还给出了numba如何定义使用List

1、最简单的使用

当输出返回值为整数或浮点数时:

from numba import jit
@jit(nopython=True)
def f(x, y):
    return x+y

if __name__ == '__main__':
    a = 1
    b = 1
    print(f(a,b))

解释:

使用装饰器,另外,nopython=True是防止numba自动更改加速模式,也就是使用nopython。

上述代码等价于:

from numba import njit
@njit  # 也就是jit(nopython=True)
def f(x, y):
    return x+y

if __name__ == '__main__':
    a = 1
    b = 1
    print(f(a,b))

2、进阶

当输出返回值为“不同类型值”时:

装饰器使用:generated_jit

from numba import generated_jit, typed

@generated_jit(nopython=True)
def f2(x):
    if x==1:
        return lambda x: x+1
    else:
        return lambda x: [1,2]

if __name__ == '__main__':
    a = 1
    print(f2(a))

当进行矩阵或向量运算时:

使用装饰器:vectorize

from numba import vectorize, float64
import numpy as np

@vectorize([float64(float64, float64)])  # 注意有中括号
def f(x, y):
    return x + y

if __name__ == '__main__':
    a = np.array([1,2])
    b = np.array([2,2])
    print(f(a,b))

补充

在numba内定义列表:

import numpy as np
import time
NUM = 160
from numba import jit
from numba.typed import List

a = List()
a.append(1) # 同样需要指定数据类型,塞个1,数据类型就是int

@jit(nopython=True)
def f(a):
    for i in range(NUM):
        a.append(i)

if __name__ == '__main__':
   for i in range(5):
    start = time.time()
    f(a)
    print(time.time()-start)

来源:https://blog.csdn.net/qq_24211837/article/details/124520545

标签:python,加速器,numba
0
投稿

猜你喜欢

  • php在windows环境下获得cpu内存实时使用率(推荐)

    2023-11-15 04:44:23
  • 用Python获取摄像头并实时控制人脸的实现示例

    2022-12-11 09:50:21
  • 如何处理好网页色彩搭配

    2007-08-10 13:22:00
  • Python实现从url中提取域名的几种方法

    2022-03-14 12:55:30
  • CI框架整合smarty步骤详解

    2023-11-14 11:18:11
  • 原生JS实现Ajax通过POST方式与PHP进行交互的方法示例

    2023-09-07 22:44:41
  • JavaScript变量类型以及变量作用域详解

    2023-08-12 08:50:17
  • 用python打开摄像头并把图像传回qq邮箱(Pyinstaller打包)

    2021-04-26 22:34:55
  • CSS解决未知高度的垂直水平居中自适应问题

    2009-03-17 17:06:00
  • python制作小说爬虫实录

    2023-09-30 17:39:25
  • 请问[\\u4E00-\\u9FA5]是什么正则表达式码

    2009-07-10 13:10:00
  • asp代码WinHttp.WinHttpRequest.5.1使用例子

    2010-03-11 21:28:00
  • 无法通过Google网站管理工具验证的部分情况解决办法

    2009-07-28 12:56:00
  • 正则 global 属性介绍

    2008-03-18 20:50:00
  • 理解 SQL Server 中系统表Sysobjects

    2009-01-20 15:13:00
  • Tensorflow中使用tfrecord方式读取数据的方法

    2023-12-05 01:01:18
  • Python参数传递机制传值和传引用原理详解

    2023-07-28 11:16:02
  • Python高级编程之继承问题详解(super与mro)

    2023-08-08 18:58:47
  • mysql5在rhel5下乱码问题及解决方法

    2010-12-03 16:26:00
  • Django中ORM找出内容不为空的数据实例

    2022-03-24 04:47:56
  • asp之家 网络编程 m.aspxhome.com