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