[EMAIL PROTECTED] wrote: > My memory value comes from experiments, I have created a little > program like this: > > from memory import memory > > def main(N): > m1 = memory() > print m1 > > d = {} > for i in xrange(N): > d[i] = None > > m2 = memory() > print m2 > print float((m2 - m1) * 1024) / N > main(20000000) > > Where memory is a small module of mine that calls a little known > program that tells how much memory is used by the current Python > process. The results for that run n=20000000 are (first two numbers > are kilobytes, the third number is byte/pair): > > 1876 > 633932 > 32.3612672 > > It means to store 20_000_000 pairs it requires about 647_000_000 > bytes, Python 2.5.2, on Win. >
What do you get if you change the output to exclude the integers from the memory calculation so you are only looking at the dictionary elements themselves? e.g. def main(N): keys = range(N) m1 = memory() print m1 d = {} for i in keys: d[i] = None m2 = memory() print m2 print float((m2 - m1) * 1024) / N main(20000000) -- Duncan Booth http://kupuguy.blogspot.com -- http://mail.python.org/mailman/listinfo/python-list