我有一个下载和保存html页面的功能。随着时间的推移,内存不会被释放,程序会变慢。我怎样才能强制释放这个记忆(或占用这个记忆的东西?
我认为问题可能在于阅读,编写文件。虽然我调用close(),但还有其他问题吗?
以下代码位于for循环中(这已完成1000次以上)
openFile = None
try:
#download the page
pageText = getPageAsText(url)
#write file to disk
fileName = name
openFile = open(os.path.expanduser('~')+STATIC_DIRECTORY+'/'+name, 'w')
openFile.write(pageText)
except Exception:
traceback.print_exc()
finally:
if openFile is not None:
openFile.close()
答案 0 :(得分:2)
您可以del
取消引用未使用的变量。它提示垃圾收集器更早收集内存。没有您的整个代码,我们无法看到内存泄漏发生的位置。
我还会使用with
重写您的代码,因此它会自行处理。
pageText = getPageAsText(url)
with open(os.path.expanduser('~')+STATIC_DIRECTORY+'/'+name, 'w') as f:
f.write(pageText)
答案 1 :(得分:0)
您可以手动拨打gc
gc。
但是您的数据未发布,因此无法正常运行。
在循环结束时添加代码
pageText = None
fileName = None
openFile = None
Python gc将自动运行。
答案 2 :(得分:0)
我感觉问题可能在其他地方,但强制垃圾收集:
import gc
gc.collect() # force garbage collection