Hi,
Josiah Carlson <josiah.carlson <at> gmail.com> writes:
> i = list(d.keys())
Obviously that doesn't solve the problem. list() consumes the generator
one after another, objects can still die when the list is created. Imagine
the following example which uses threads::
from time import sleep
from weakref import WeakKeyDictionary
from threading import Thread
class Foo(object):
pass
d = WeakKeyDictionary()
l = []
for x in range(100000):
obj = Foo()
d[obj] = None
l.append(obj)
del obj
def iterater():
for item in list(d.keys()):
pass
Thread(target=iterater).start()
while True:
del l[0]
Regards,
Armin
_______________________________________________
Python-Dev mailing list
[email protected]
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe:
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com