range y uso excesivo de memoria
Hector Miuler Malpica Gallegos
miuler en gmail.com
Mie Feb 27 02:35:06 CET 2008
Hola amigos, tengo una duda, yo tengo la siguiente función en mi
python2.5 (ubuntu 8.04) (para ser más exactos uso ipython 0.8.1-2)
def repeat2(num):
for i in range(num):
i = i+i
def repeat1(num):
i=0
while i <= num:
i = i+i
i += 1
Ejecutando las funciones obtengo el siguiente resultado:
In [11]: t1 = time.time();repeat1(50000000);t2 = time.time();print t2-t1
17.0249400139
In [12]: t1 = time.time();repeat2(50000000);t2 = time.time();print t2-t1
11.1878969669
In [13]: t1 = time.time();repeat1(50000000);t2 = time.time();print t2-t1
16.5229768753
In [14]: t1 = time.time();repeat2(50000000);t2 = time.time();print t2-t1
10.8672430515
en la función que uso range el tiempo es considerablemente menor, pero
es uso de memoria es enorme,
a tal punto de casi saturar mi memoria, y al terminar la ejecución
prácticamente no libera nada de nada, claro la segunda vez ya no sigue
aumentando al final el ipython queda con:
PID TTY STAT TIME MAJFL TRS DRS RSS %MEM COMMAND
10401 pts/1 S+ 0:39 0 987 600112 598004
38.4 /usr/bin/python /usr/bin/ipython
usa más de 580M de ram,
he tratado de usar gc.collect() y no libera nada, luego haciendo una
prueba solo con range(50000000) ocurre lo mismo ocupa mucha memoria,
como puedo hacer para liberar esa memoria????
que es lo recomendable? el uso de while? pero demora mucho, el uso de
range? pero consume mucha memoria y no se como liberarla
--
Hector Miuler Malpica Gallegos <miuler en gmail.com>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 189 bytes
Desc: Esta parte del mensaje está firmada digitalmente
URL: <http://mail.python.org/pipermail/python-es/attachments/20080226/ee0a5df8/attachment.pgp>
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es