On Jan 25, 12:59 am, "Frank Millman" <fr...@chagford.com> wrote: > Hi all > > Is defaultdict thread safe?
Sometimes. It depends on whether an operation has callbacks to pure Python. > Assume I have - > > from collections import defaultdict > my_dict = defaultdict(list) > > If two threads call "my_dict['abc'].append(...)" simultaneously, is it > guaranteed that my_dict['abc'] will end up containing two elements? Yes. But, if the constructor is a user defined class, the pure python code runs for the instantiation and all bets are off. class A: def __init__(self): . . . my_dict = defaultdict(A) # not thread-safe. Raymond -- http://mail.python.org/mailman/listinfo/python-list