Is defaultdict thread safe?

Raymond Hettinger python at
Mon Jan 25 10:26:52 CET 2010

On Jan 25, 12:59 am, "Frank Millman" <fr... at> wrote:
> Hi all
> Is defaultdict thread safe?

Sometimes.  It depends on whether an operation has callbacks to pure

> 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?


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.


More information about the Python-list mailing list