指点成金-最美分享吧

登录

python加速包numba并行计算多线程

佚名 举报

篇首语:本文由小编为大家整理,主要介绍了python加速包numba并行计算多线程相关的知识,希望对你有一定的参考价值。

1、下面直接上代码需要注意的地方numba的官网找到

  1)有一些坑自己去numba的官网找找看,下面是我的写的一个加速的程序,希望对你有帮助。

#coding:utf-8import timefrom numba import jit, prange, vectorizefrom numba import cudafrom numba import njitimport numpy as npdef adds(x,y,m):    return [x*i for i in range(y)]@jit(parallel=True,nogil=True)# @njit(parallel=True,nogil=True)def adds1(x,y,m):    sd =  np.empty((y))    for i in prange(y):        for j in range(m):            sd[i]=x*i*m    return sd@jit(parallel=True,nogil=True)def test(n):    temp = np.empty((50, 50)) # <--- allocation is hoisted as a loop invariant as `np.empty` is considered pure    for i in prange(n):        temp[:] = 0           # <--- this remains as assignment is a side effect        for j in range(50):            temp[j, j] = i    return tempif __name__=="__main__":    n = 50    max = 10000**2*12    m=100    # st1 = time.time()    # val_1 = adds(n,max,m)    # print(time.time()-st1)    st2 = time.time()    val_2 = adds1(n,max,m)    print(time.time()-st2)    st3 = time.time()    tmp = test(100**3*10)    print(time.time()-st3)

  

  2) 最后一个显示时间输入,

  如果不调用jit装饰器的话这两个程序在我的电脑直接跑不下来。调用过后,Python可以做并行计算,开启多线程,忽略gil动态锁。

以上是关于python加速包numba并行计算多线程的主要内容,如果未能解决你的问题,请参考以下文章