On Jan 25, 12:59 am, "Frank Millman" <[email protected]> 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