[BON] ha scritto:
======================
s=[]
for i in range(11000-1): for j in range(i+1, 11000): .... s.append(((i,j),sim)) ======================
above sim is floating type.
s.append is totally coducted 60,494,500 times.
but this code raise MemoryError.

My computer has 4G RAM.
i think it's enough. but it doesn't...

So, i've tested below code.
======================
a=[] i=0 while i<60494500 : a.append(i) i+=1
======================
but this code raise also MemoryError.

How can i resolve this problem?
please, help...

Regards,


If you _really_ have to store so many numbers in memory (hint: if you are processing them sequentially, you don't need to store all them - use
generators instead) then you may have better luck using mmap module to
create a huge file-memory object, that you can access both as a file and as a list, and put numbers in it after packing/unpacking with struct.
Something like this (only marginally tested ):

>>> memory = mmap.mmap(-1, 60494500*4)
>>> def memory_put(offset, f):
...     memory[offset*4:(offset+1)*4] = struct.pack( "%f", f )
 >>> def memory_get(offset):
...     return struct.unpack( "f", memory[offset*4:(offset+1)*4] )[0]
>>> memory_put(12, 3.14 )
>>> memory_get(12)
3.1400001049041748

Ciao
------
FB

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

Reply via email to