Code: Alles auswählen
In : type(unicode(c))
Out: <class BeautifulSoup.NavigableString>
Code: Alles auswählen
In : type(unicode(c))
Out: <class BeautifulSoup.NavigableString>
Code: Alles auswählen
gc.set_debug(gc.DEBUG_LEAK)
gc.collect()
print "gc-check => checked %i, garbage: %i" % (len(gc.get_objects()), len(gc.garbage))
for o in gc.garbage:
print type(o), o
del gc.garbage[:]
fileErrLog.flush()
Und in errlog bekomme ich 11 collectable Objekte angezeigt (ich denke die da oben). Aber nur, solange die Suche erfolglos war (also heute morgen noch nichts los war). Inzwischen rast eine schier endlose Liste übers Terminal und ich musste abbrechen. Bei dem, was ich sah, handelte es sich um Tags und NaviableStrings (bzw. Listen und Dicts, die wahrscheinlich davon referenziert werden, siehe oben).<type 'instance'>
<type 'dict'> {'originalEncoding': 'ascii', 'parseOnlyThese': None, 'fromEncoding': None, 'verbose': 0, 'parent': None, 'parserClass': <class BeautifulSoup.BeautifulSoup at 0x402adf90>, 'quoteStack': [], 'nextSibling': None, '_SGMLParser__starttag_text': u'<A HREF="http://...">', 'currentData': [], 'attrs': [], 'offset': 0, 'instanceSelfClosingTags': {None: None}, 'containsSubstitutions': 0, 'convertEntities': None, 'stack': [], 'isSelfClosing': 0, 'previous': u'\n', 'tagStack': [], 'smartQuotesTo': 'html', 'contents': [], 'markupMassage': [(<_sre.SRE_Pattern object at 0x40058b40>, <function <lambda> at 0x402b5578>), (<_sre.SRE_Pattern object at 0x4006c120>, <function <lambda> at 0x402b55c0>)], 'name': u'[document]', 'markup': None, 'nomoretags': 0, 'next': None, 'literal': 0, 'rawdata': u'', 'lasttag': u'a', 'hidden': 1, 'currentTag': , 'previousSibling': None, 'lineno': 1}
<type 'list'> []
<type 'list'> []
<type 'dict'> {None: None}
<type 'list'> []
<type 'list'> []
<type 'list'> []
<type 'list'> []
<class 'BeautifulSoup.NavigableString'>
<type 'dict'> {'nextSibling': None, 'next': None, 'previousSibling': None, 'parent': None, 'previous': None}
Es stehen also AUSSCHLIEßLICH BF.Tag Instanzen in der Liste nicht referenzierter, nicht löschbarer Objekte. Nur warum? Wenn ich die Doku richtig gelesen habe, sollte der GC Cycles von Objekten ohne __del__-Methode aufbrechen können. Und die BF.Tag Objekte haben keine.gc-check => checked 19533, garbage: 1612
<type 'instance'> BeautifulSoup.Tag
<type 'instance'> BeautifulSoup.Tag
<type 'instance'> BeautifulSoup.Tag
<type 'instance'> BeautifulSoup.Tag
...
Code: Alles auswählen
del Soup
Grüße,Traceback (most recent call last):
File "./gctest.py", line 5, in ?
from troubleinfo import quick_info, get_props, troubles_of_day
File "./troubleinfo.py", line 213
del Soup
SyntaxError: can not delete variable 'Soup' referenced in nested scope