我试图逐页搜索网站上的一些信息,基本上就是我所做的:
import mechanize
MechBrowser = mechanize.Browser()
Counter = 0
while Counter < 5000:
Response = MechBrowser.open("http://example.com/page" + str(Counter))
Html = Response.read()
Response.close()
OutputFile = open("Output.txt", "a")
OutputFile.write(Html)
OutputFile.close()
Counter = Counter + 1
好吧,上面的代码最终抛出了“Out of Memory”错误,在任务管理器中它显示脚本在运行几个小时后耗尽了近1GB的内存......怎么回事?!
有人会告诉我出了什么问题吗?
答案 0 :(得分:14)
这不是内存泄漏,而是一个未记录的功能。基本上,mechanize.Browser()
将所有浏览器历史记录集中存储在内存中。
如果您在MechBrowser.clear_history()
之后添加对Response.close()
的来电,则应该可以解决问题。