python加速包numba并行计算多线程
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python加速包numba并行计算多线程相关的知识,希望对你有一定的参考价值。
1、下面直接上代码需要注意的地方numba的官网找到
1)有一些坑自己去numba的官网找找看,下面是我的写的一个加速的程序,希望对你有帮助。
#coding:utf-8 import time from numba import jit, prange, vectorize from numba import cuda from numba import njit import numpy as np def 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 temp if __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并行计算多线程的主要内容,如果未能解决你的问题,请参考以下文章
为啥 np.hypot 和 np.subtract.outer 与香草广播相比非常快?使用 Numba 并行加速 numpy 进行距离矩阵计算