在用pytest做測試的時候,發(fā)現(xiàn)了用例占用了很大內(nèi)存抛腕,使用模塊memory_profiler檢測代碼后芋绸,發(fā)現(xiàn)在使用fig.savefig()的時候大量內(nèi)存占用,并且沒有釋放担敌,由于圖比較大摔敛,且數(shù)量多,在跑了幾個用例之后全封,16G的內(nèi)存就被用的差不多了......
解決辦法:
在fig.savefig()后根據(jù)需要增加響應(yīng)方法
plt.cla() # 清除axes马昙,即當前 figure 中的活動的axes,但其他axes保持不變刹悴。
plt.clf() # 清除當前 figure 的所有axes行楞,但是不關(guān)閉這個 window,所以能繼續(xù)復(fù)用于其他的 plot土匀。
plt.close() # 關(guān)閉 window子房,如果沒有指定,則指當前 window。
plt.close(fig)
plt.close('all') # 我采用了這個证杭,關(guān)閉了所有的因為占用內(nèi)存實在是大田度,為了及時回收內(nèi)存,也使用了gc (為了內(nèi)存在case結(jié)束之后解愤,也使用了gc)
在plt.close('all') 增加了
gc.collect()
改善后的結(jié)果:
使用memory_profiler檢測內(nèi)存镇饺,用例占用真的降下來了。