内存使用 matplotlib - 如何清理内存?

问题描述

我正在努力在函数执行后清除内存,我一直在尝试 plt.close('all')、Del 和 gc.collect() 但没有完成工作。

'''
从 cwt 系数创建标度图
在:系数:numpy数组
出:三个 chanell 图像:numpy 数组
'''

def get_scalogram(coef,show = False):
    # create scalogram figure
    fig = plt.figure()
    ax1 = fig.add_subplot()
    ax1.imshow(abs(coef),interpolation = 'bilinear',cmap='jet',aspect='auto');
    plt.gca().invert_yaxis();
    fig.tight_layout(pad=False)
    plt.axis('off');

    # convert scalogram to np array
    fig.canvas.draw()
    data = np.frombuffer(fig.canvas.tostring_rgb(),dtype=np.uint8)
    data = data.reshape(fig.canvas.get_width_height()[::-1] + (3,))
    if show:
        fig.show()
    
    # clean
    plt.close('all');
    del fig
    gc.collect()
    
    
    return data

'''
遍历文件列表并生成标度图
(保存新的压缩文件:(图像,标签)。npz)
in: 文件路径: (coef,freq,label).npz
'''

def generate_feats(filename):
    # extract coefs from file and get scalogram
    data = np.load(filename,allow_pickle=True)
    coef,label = data['arr_0'],data['arr_1'],data['arr_2']
    image = get_scalogram(coef)
    
    # save
    filename = filename.replace("conc_data","scalogram") # -> change dir
    filename = filename.replace(".wav.npz","") 
    np.savez_compressed(filename+"_scalogram"+'.npz',image,label)

    # clean
    del image
    del data,coef,label
    gc.collect()
# execution: 
a=process_map(generate_feats,glob.glob("/workspace/data/conc_data/*.npz"),max_workers=8,smoothing=0.0,chunksize=4)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)