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
投稿

猜你喜欢

  • jupyter notebook内核配置的图文教程

    2023-11-22 03:56:56
  • 微信小程序列表渲染功能之列表下拉刷新及上拉加载的实现方法分析

    2024-05-11 09:34:44
  • lnmp下如何关闭Mysql日志保护磁盘空间

    2024-01-14 02:54:52
  • 使用Python实现二分法查找的示例

    2022-02-08 13:52:53
  • 浅谈怎么给Python添加类型标注

    2023-11-21 05:16:17
  • python如何求100以内的素数

    2021-06-20 23:19:06
  • 运行tensorflow python程序,限制对GPU和CPU的占用操作

    2022-07-03 02:49:26
  • Tensorflow之Saver的用法详解

    2023-10-01 22:40:07
  • php时间不正确的解决方法

    2023-11-18 07:33:15
  • vue 解决兄弟组件、跨组件深层次的通信操作

    2024-05-09 15:12:55
  • 详解vue中$nextTick和$forceUpdate的用法

    2024-06-05 09:15:44
  • gchart:基于google图表API的jquery组件全攻略:1、入门

    2010-01-25 12:18:00
  • php中session使用示例

    2024-04-30 08:46:58
  • python3让print输出不换行的方法

    2021-02-16 20:48:33
  • Mysql Explain 详解

    2010-12-03 16:09:00
  • OpenCV目标检测Meanshif和Camshift算法解析

    2022-06-15 21:30:35
  • Python分析最近大火的网剧《隐秘的角落》

    2023-07-17 07:09:04
  • windows下Python实现将pdf文件转化为png格式图片的方法

    2022-03-22 08:55:51
  • Python 的矩阵传播机制Broadcasting和矩阵运算

    2021-07-28 01:03:34
  • vue-router命名路由和编程式路由传参讲解

    2024-05-02 17:03:39
  • asp之家 网络编程 m.aspxhome.com