On Jan 25, 11:26 am, Raymond Hettinger <pyt...@rcn.com> wrote:
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

Many thanks

Frank


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to