我在Spyder中运行python代码。当我启动代码时,内存占22%,但在完成代码后,内存保持在64%。我必须从任务管理器重新启动内核或结束进程到22%。为什么会出现这种情况以及如何处理它?</ p>
我附上了我的代码以获取更多详细信息。
import csv
import re
import openpyxl
import os
papers_dir = os.listdir('Persian - Copy')
#Journals
for y in papers_dir:
papers = []
if y.endswith('.xlsx'):
wb = openpyxl.load_workbook('Persian - Copy/'+y)
sheet = wb.active
for z in range(2, sheet.max_row+1):
id_ = str(sheet.cell(row=z, column=1).value)
field = str(sheet.cell(row=z, column=2).value).replace('ي','ی').replace('ك','ک').split()
field1 = str(sheet.cell(row=z, column=4).value).replace('ي','ی').replace('ك','ک').replace('None', '').split('،')
field2 = re.sub(re.compile('<.*?>'), '', str(sheet.cell(row=z, column=3).value))
field2 = field2.replace('ي','ی').replace('ك','ک').replace('لطفا برای مشاهده چکیده به متن کامل (PDF) مراجعه فرمایید.','').replace(' لطفا برای مشاهده چکیده به متن کامل (PDF) مراجعه فرمایید.','').replace('None', '').replace('.',' ').split()
f = [id_, (field + field1 + field2)]
papers.append(f)
wb.close()
sheet = 0
print(y)
#Making Unique Rows
uniques = []
x_0 = []
for x in papers:
if x[0] not in x_0:
x_0.append(x[0])
uniques.append(x)
with open('all.csv', 'a+', newline='', encoding='UTF-16') as un:
writer = csv.writer(un, delimiter= '\t')
for x in uniques:
writer.writerow(x)
papers = 0
uniques = 0
x_0 = 0
f = 0
答案 0 :(得分:3)
为了解决这个问题,我使用了pickle来保存对象,然后每次都重新启动控制台。
这是令人讨厌的,但它有助于消除内存使用情况。我认为开发人员正在研究它,但是这个问题已经存在一年左右了。
答案 1 :(得分:2)
关闭运行代码的ipython控制台应该释放它使用的内存。