微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决内存使用 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 举报,一经查实,本站将立刻删除。