str(html.tag) č troppo lenta per documenti grandi
Status: Inactive
Brought to you by:
mfrasca
es.
---
mytag = html.tag('gino', '')
mytag << html.tag(...)
mytag << html.tag(...)
....(MOLTE volte)
print str(mytag)
return True
---
se tento di fare str(mytag) e mytag č, per esempio, un
documento xml di 7 MB (causa rifiuti, sic!), mi tocca
aspettare una decina di minuti prima di avere l'output.
il problema parrebbe stare nel metodo __str__ di
html.tag che concatena ricorsivamente tutto il mondo
allocando tutto il mondo
Logged In: YES
user_id=512199
il problema causato dal fatto che nella __str__ mi
appoggio completamente alla furbizia del python per la
gestione delle stringhe ed in particolare la loro
concatenazione. se la ricorsione la realizzassi a mano
all'interno di una funzione operante iterativamente, potrei
ottimizzare l'operazione. alternativamente, si potrebbe
esplorare l'appoggiarsi a libxml2.
al margine:
questa potrebbe essere l'occasione di riconoscere che in
html.py si fa del lavoro generico e solo nelle classi
derivate da html.tag si scende nello specifico html.
magari sarebbe meglio scindere html.py in xml.py e html.py,
la prima definirebbe la classe xml.tag, l'altra tutte le
html.page, html.input, html.select, ...
Logged In: YES
user_id=512199
__str__ ora accetta un secondo parametro 'result' (defaults
to None) che, a regime, contiene una lista di stringhe, a
cui la __str__ aggiunge il suo output.
alla fine la sola __str__ che era stata chiamata con
result=None restituisce un valore - cio ''.join(result).
le altre avranno avuto il solo effetto collaterale sul
contenuto della lista.