zoukankan      html  css  js  c++  java
  • 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动态锁。

  • 相关阅读:
    R
    P
    O
    M
    二分算法的一些思考
    I
    H
    G
    5-46 新浪微博热门话题 (30分)——unfinished HASH
    BZOJ 1179: [Apio2009]Atm
  • 原文地址:https://www.cnblogs.com/wuzaipei/p/10660641.html
Copyright © 2011-2022 走看看