En Wed, 31 Dec 2008 06:34:48 -0200, Steven D'Aprano <st...@remove-this-cybersource.com.au> escribió:

Each time you are appending to the list, you append a tuple:

((i, j), sim)

where sim is a float and i and j are ints. How much memory does each of
those take?

sys.getsizeof( ((0, 1), 1.1) )
32

(On Windows, 32 bits, I get 36)

So each entry requires 32 bytes. 60 million times 32 bytes = almost 2GB
alone. Plus the list itself will require (approximately) between 230MB
and 460MB just for the pointers.

That was just the size of the "outer" tuple; you have to add the size of each element too. First one is another 2-item tuple (36 bytes too) plus its elements (two integers, 12 bytes each). Second element is a float and takes 16 bytes. Total: 112 bytes per item; the final size may be a bit smaller because some objects may be shared (e.g. small integers)

--
Gabriel Genellina

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to