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. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com