使用matplotlib內(nèi)存泄漏

在用pytest做測試的時候,發(fā)現(xiàn)了用例占用了很大內(nèi)存,使用模塊memory_profiler檢測代碼后,發(fā)現(xiàn)在使用fig.savefig()的時候大量內(nèi)存占用,并且沒有釋放,由于圖比較大,且數(shù)量多,在跑了幾個用例之后,16G的內(nèi)存就被用的差不多了......

解決辦法:

  1. 在fig.savefig()后根據(jù)需要增加響應(yīng)方法
    plt.cla() # 清除axes,即當(dāng)前 figure 中的活動的axes,但其他axes保持不變。
    plt.clf() # 清除當(dāng)前 figure 的所有axes,但是不關(guān)閉這個 window,所以能繼續(xù)復(fù)用于其他的 plot。
    plt.close() # 關(guān)閉 window,如果沒有指定,則指當(dāng)前 window。
    plt.close(fig)
    plt.close('all') # 我采用了這個,關(guān)閉了所有的

  2. 因為占用內(nèi)存實在是大,為了及時回收內(nèi)存,也使用了gc (為了內(nèi)存在case結(jié)束之后,也使用了gc)
    在plt.close('all') 增加了
    gc.collect()

改善后的結(jié)果:

使用memory_profiler檢測內(nèi)存,用例占用真的降下來了。

附加 memory_profiler 地址

https://pypi.org/project/memory-profiler/

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容