Ich habe versucht, mehrere Web-Seiten mit BeautifulSoup4 in Python 2.7.3 zu verarbeiten, aber nach jedem Parsen geht die Speicherauslastung hoch und hoch.Python hohe Speicherauslastung mit BeautifulSoup
Dieser vereinfachte Code erzeugt das gleiche Verhalten:
from bs4 import BeautifulSoup
def parse():
f = open("index.html", "r")
page = BeautifulSoup(f.read(), "lxml")
f.close()
while True:
parse()
raw_input()
Nach Parse() aufgerufen wird für fünf Mal die Python-Prozess 30 MB Speicher bereits verwendet (verwendet HTML-Datei war etwa 100 kB) und es geht nach oben durch 4 MB bei jedem Anruf Gibt es eine Möglichkeit, diesen Speicher oder eine Art Workaround zu befreien?
Update: Dieses Verhalten gibt mir Kopfschmerzen. Dieser Code verwendet leicht viel Speicher auf, obwohl die BeautifulSoup Variable sollte lange gelöscht werden:
from bs4 import BeautifulSoup
import threading, httplib, gc
class pageThread(threading.Thread):
def run(self):
con = httplib.HTTPConnection("stackoverflow.com")
con.request("GET", "/")
res = con.getresponse()
if res.status == 200:
page = BeautifulSoup(res.read(), "lxml")
con.close()
def load():
t = list()
for i in range(5):
t.append(pageThread())
t[i].start()
for thread in t:
thread.join()
while not raw_input("load? "):
gc.collect()
load()
das könnte vielleicht eine Art ein Fehler sein?
30 MB ist nicht viel ,, Garbage Collection wurde möglicherweise noch nicht ausgelöst, ich denke, .. gibt es ein Problem mit Speicher oder etwas? – Aprillion