[Python-Dev] New methods for weakref.Weak*Dictionary types
Armin Rigo
arigo at tunes.org
Wed May 10 13:08:24 CEST 2006
Hi Tim,
On Mon, May 01, 2006 at 04:57:06PM -0400, Tim Peters wrote:
> """
> # Return a list of weakrefs to all the objects in the collection.
> # Because a weak dict is used internally, iteration is dicey (the
> # underlying dict may change size during iteration, due to gc or
> # activity from other threads).
But then, isn't the real problem the fact that applications cannot
safely iterate over weak dicts? This fact could be viewed as a bug, and
fixed without API changes. For example, I can imagine returning to the
client an iterator that "locks" the dictionary. Upon exhaustion, or via
the __del__ of the iterator, or even in the 'finally:' part of the
generator if that's how iteration is implemented, the dict is unlocked.
Here "locking" means that weakrefs going away during this time are not
eagerly removed from the dict; they will be removed only when the dict
is unlocked.
A bientot,
Armin.
More information about the Python-Dev
mailing list