• python变量内存地址释放与加速并行计算多线程


    1、导入numba和gc包进行并行计算和内存释放

      代码如下很容易的:

    #coding:utf-8
    import time
    
    from numba import jit, prange, vectorize
    from numba import cuda
    from numba import njit
    import numpy as np
    import gc
    
    
    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)
        # 释放内存地址
        del val_2,n,max,m
        gc.collect()
    
        st3 = time.time()
        tmp = test(100**3*10)
        print(time.time()-st3)
        # 释放temp的内存地址
        del tmp
        gc.collect()
    

      

  • 相关阅读:
    Android 70道面试题汇总不再愁面试
    TOMCAT用Https替换Http的方法
    Struts2+Spring3+Hibernate3配置全过程
    javac 无效标签
    hibernate
    数据库命令行启动
    Tomcat检测程序
    SQL
    Unsupported major.minor version 49.0的错误解决
    ImportError: No module named pysqlite2
  • 原文地址:https://www.cnblogs.com/wuzaipei/p/10660663.html
Copyright © 2020-2023  润新知