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