[Python-Dev] sizeof(long) != sizeof(void*)

Samuele Pedroni pedronis at bluewin.ch
Wed Aug 6 22:56:44 EDT 2003


At 15:37 06.08.2003 -0400, Tim Peters wrote:
>[Samuele Pedroni]
> > but that something like id() can be cheaply offered/exposed is very
> > much a characteristic of the underlying GC implementation that is
> > being exploited (objects don't move),
>
>The docs for id() just promise a unique integer; it needn't be a memory
>address.

care to suggest a cheap way to get such a unique integer that's not the 
address.

> > and the GC impl is an overall implementation detail.
> >
> > I have just gone through implementing a correct id() for Jython.
> >
> > For the serious usage id() would be better substituted by an identity
> > mapping implementation
>
>Sorry, I don't know what that means, and a unique integer seems to be what
>most users of id() are looking for.

copy, pickle can use an identity mapping i.e a dictionary using identity 
instead of equality to do their business, this is more convenient if you 
cannot get a id() out of an address because otherwise I see no other way 
than keeping a weak identity mapping from objects to integral type values, 
the aforementioned unique integers. Likely using a type for which a counter 
to get fresh unique integers cheaply will not overflow too quickly. Or 
instead of the mapping attach such integrals value to each object. The 
latter is not an option for Jython, because we cannot attach things to 
general Java objects we have to deal with.

regards. 




More information about the Python-Dev mailing list