如何清除Python threading.local()
实例的所有属性?
答案 0 :(得分:3)
您可以清除它的基础__dict__
:
>>> l = threading.local()
>>> l
<thread._local object at 0x7fe8d5af5fb0>
>>> l.ok = "yes"
>>> l.__dict__
{'ok': 'yes'}
>>> l.__dict__.clear()
>>> l.__dict__
{}
>>> l.ok
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'thread._local' object has no attribute 'ok'
直接访问__dict__
被特别称为与local
模块文档中的_threading_local
对象进行交互的有效方式:
线程局部对象支持线程本地数据的管理。 如果您有想要成为线程本地的数据,只需创建 一个线程局部对象并使用其属性:
>>> mydata = local() >>> mydata.number = 42 >>> mydata.number 42
您还可以访问local-object的字典:
>>> mydata.__dict__ {'number': 42} >>> mydata.__dict__.setdefault('widgets', []) [] >>> mydata.widgets []