Is defaultdict thread safe?

Frank Millman frank at chagford.com
Mon Jan 25 04:45:02 EST 2010


On Jan 25, 11:26 am, Raymond Hettinger <pyt... at rcn.com> wrote:
> On Jan 25, 12:59 am, "Frank Millman" <fr... at 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

Many thanks

Frank





More information about the Python-list mailing list