在用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,即當(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)閉了所有的因為占用內(nèi)存實在是大,為了及時回收內(nèi)存,也使用了gc (為了內(nèi)存在case結(jié)束之后,也使用了gc)
在plt.close('all') 增加了
gc.collect()
改善后的結(jié)果:
使用memory_profiler檢測內(nèi)存,用例占用真的降下來了。