[pyar] Programación científica en python
Facundo Batista
facundobatista en gmail.com
Vie Ago 20 17:26:50 ART 2010
2010/8/20 Ricardo Armas <rarmas en gmail.com>:
> 2010/8/20 Nico Chiaraviglio <nico.chiaraviglio en gmail.com>:
>> for i in range(0,100000000):
>> pass
>> no solo demora mucho sino que ocupa mas de 1Gb en la memoria RAM.
> Claro, porque crea la lista completa, probá xrange
Igual, Python va a iterar millones de veces sin hacer nada, lo cual consume CPU.
>>> def f():
... for i in xrange(10000000):
... pass
...
>>>
>>> dis.dis(f)
2 0 SETUP_LOOP 20 (to 23)
3 LOAD_GLOBAL 0 (xrange)
6 LOAD_CONST 1 (10000000)
9 CALL_FUNCTION 1
12 GET_ITER
>> 13 FOR_ITER 6 (to 22)
16 STORE_FAST 0 (i)
3 19 JUMP_ABSOLUTE 13
>> 22 POP_BLOCK
>> 23 LOAD_CONST 0 (None)
26 RETURN_VALUE
Y Python hace esto, porque realmente no sabe si es necesario. Uno
podría estar haciendo muchas cosas en la llamada del xrange que puede
ser necesario, más allá que el cuerpo del for esté vacío.
Slds.
--
. Facundo
Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/
More information about the pyar
mailing list