Tôi đã cố gắng để cạo một số thông tin từ một trang web theo trang, về cơ bản đây là những gì tôi đã làm:"Out of Memory" lỗi với mechanize
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
Vâng, các mã trên đã kết thúc ném ra "Out of Bộ nhớ "lỗi và trong công việc quản lý nó cho thấy rằng kịch bản sử dụng lên gần 1GB bộ nhớ sau vài giờ chạy ... làm thế nào đến ?!
Có ai cho tôi biết điều gì đã xảy ra không?
Điều đầu tiên tôi muốn loại trừ là cơ giới hóa bị rò rỉ bộ nhớ - chỉ cần sử dụng 'urllib2.urlopen()' để thay thế. –
Cũng giống như một lưu ý, nó nhiều hơn nữa pythonic để làm '' cho truy cập trong phạm vi (5000): ''. Và PEP8 khuyến nghị lower_case_with_underscores cho các tên biến, trong khi CamelCase được dành riêng cho các lớp. Ngoài ra, hãy kiểm tra '' with'' để viết/đọc/từ tệp. –
(a) Loại câu hỏi "có gì với mã của tôi" tốt hơn trên codereview (b) sử dụng lại biến vì vậy không phải là vấn đề (c) Tìm hiểu về cách định cấu hình bộ nhớ. – Marcin