在openpyxl對Excel讀寫操作過程中,發現內存沒有馬上釋放,如果得多次讀取大文件,內存爪機,后續代碼就無法運行。
嘗試:各種wb.save()或者with open等途徑無法解決。
發現:因為python的回收機制,導致內存無法馬上釋放,於是乎就有了
import gc (garbage collector) del wb,ws #wb為打開的工作表 gc.collect() #馬上內存就釋放了。
效果喜人:從最高的6/7GB占用可以立刻回到1/2GB
還有一個是谷歌找到了,也記錄下(不過我用了沒效果)——主要是不同是以只讀模式打開。
with open(xlsx_filename, "rb") as f: in_mem_file = io.BytesIO(f.read()) wb = load_workbook(in_mem_file, read_only=True)
希望可以幫到遇到類似問題的小伙伴!