[Python-Dev] Anyone using weakrefs?

Emile van Sebille emile at fenx.com
Sat Mar 24 17:24:51 EST 2001


Thanks!  That's cool.  I'd wondered if there was a way to re-swizzle in
objects if they still existed from the ID alone, and it looks like this can
do it.  I've got a process that takes up about 700Mb of my system's 512Mb
memory, and for testing runs about 5 1/2 hours.  It runs about 10 minutes on
the client's 2Gb system, even though their processor is 1/3 the speed.  I
never realized that thrashing could make such a difference.

At this point, it's in place and they've paid the price, but I'll start
playing with weak references to see if it improves my local test
performance.  I'm practicing one-man-shop XP ;-) and when the both of us get
into it, being able to do more than a single iteration per day would really
help.

--

Emile van Sebille
emile at fenx.com

---------
"Tim Peters" <tim.one at home.com> wrote in message
news:mailman.985469191.25050.python-list at python.org...
> [Fred Drake]
> > Is anyone out there playing with the weak references support yet?
> > I'd *really* appreciate receiving a short snippet of non-contrived
> > code that makes use of weak references to use in the documentation.
>
> Alas, it's kinda like asking for a "short snippet" illustrating
coroutines:
> the need isn't apparent in tiny examples.
>
> Still, I've been happily playing w/ this little module:
>
> import weakref
> id2obj_dict = weakref.mapping()
>
> def remember(obj):
>     id2obj_dict[id(obj)] = obj
>
> def id2obj(id):
>     return id2obj_dict.get(id, None)
>
> In various introspective tools (like Cyclops.py), there's a need to keep
> track of "other peoples'" class instances.  Before weakrefs, it was
> impossible to do this without keeping the instances artificially alive.
Now
> I can pass arbitrary instances to remember() above, then just use their
ids
> internally.  This doesn't keep the objects alive, but id2obj() above can
> still get the objects back so long as they're still alive.
>
> I suppose I could work with weakrefs directly instead of indirecting
through
> id()s, but most code of this nature I have is already mucking w/ ids
anyway
> (ints are small, fast, cheap and make great dict keys themselves).
>
>





More information about the Python-list mailing list