On Mon, Jul 6, 2009 at 6:12 AM, mayank gupta<mooni...@gmail.com> wrote: > Thanks for the other possibilites. I would consider option (2) and (3) to > improve my code. > > But out of curiosity, I would still like to know why does an object of a > Python-class consume "so" much of memory (1.4 kb), and this memory usage has > nothing to do with its attributes. > > Thanks > > Regards. > > On Mon, Jul 6, 2009 at 12:03 PM, Chris Rebert <c...@rebertia.com> wrote: >> >> On Mon, Jul 6, 2009 at 2:55 AM, mayank gupta<mooni...@gmail.com> wrote: >> > Hi, >> > >> > I am creating a tree data-structure in python; with nodes of the tree >> > created by a simple class : >> > >> > class Node : >> > def __init__(self , .... other attributes): >> > # initialise the attributes here!! >> > >> > But the problem is I am working with a huge tree (millions of nodes); >> > and >> > each node is consuming much more memory than it should. After a little >> > analysis, I found out that in general it uses about 1.4 kb of memory for >> > each node!! >> > I will be grateful if someone could help me optimize the memory usage. >> >> (1) Use __slots__ (see >> http://docs.python.org/reference/datamodel.html#slots) >> (2) Use some data structure other than a tree >> (3) Rewrite your Node/Tree implementation in C >> >> Cheers, >> Chris >> -- >> http://blog.rebertia.com >
For option 2 you should try using the built in types, list tuple or dict. You might get better results. I'm curious too as to why the class/instance code should take so much memory, could you mention more about the code? -- http://mail.python.org/mailman/listinfo/python-list