python - threading.local()的使用

使用

    import threading

    ctx = threading.local()

将这个类实例化得到一个全局对象,但是不同的线程使用这个对象存储的数据其它线程不可见(本质上就是不同的线程使用这个对象时为其创建一个独立的字典)。

下面 是_collection中的一段源码

python - threading.local()的使用

实例化ThreadLocalRegistry 后self.registry 被赋值 threading.local()

在__call__中会self.regitry被赋予属性value,这样在使用多线程是就能在全局变量中开辟一块,线程的独立空间,为我们对不同的线程做相应的处理。