我想实现一个完整的字典子类,它在各方面都是线程安全的 - 所有get和set方法。目前,我只是通过这样的辅助函数提供对它的访问:
# Don't access directly (I am not a big fan of name mangling)
mydict = dict()
lock = threading.Rlock()
def getdict():
"""Safe way to access the dict."""
with lock:
return mydict
我认为通过继承dict可能会更好,因为它可以避免像getdict()["key"] = "value"
这样的尴尬调用。来自collections
库的包装类看起来很有希望,但我不确定需要覆盖哪些方法才能使其完全安全。 __getattr__
和__setattr__
会是两个,但是update
呢?还有吗?这甚至是个好主意吗?