Thread-safe dictionary

tuom.larsen at gmail.com tuom.larsen at gmail.com
Thu May 10 08:45:24 EDT 2007


Hi,

please consider the following code:


from __future__ import with_statement

class safe_dict(dict):
    def __init__(self, *args, **kw):
        self.lock = threading.Lock()
        dict.__init__(self, *args, **kw)
    def __getitem__(self, key):
        with self.lock:
            return dict.__getitem__(self, key)
    def __setitem__(self, key, value):
        with self.lock:
            dict.__setitem__(self, key, value)
    def __delitem__(self, key):
        with self.lock:
            dict.__delitem__(self, key)


- would I need to override another methods e.g. update() or items() in
order to remain thread-safe or is this enough?
- in __getitem__, does it release the lock after returning the item?
- wouldn't it be better to use threading.RLock, mutex, ... instead?

Thanks a lot!




More information about the Python-list mailing list