Python threading.local()对我不起作用

时间:2013-07-17 22:29:56

标签: python multithreading

这很简单:

import threading as t
t.local().x = 1
print t.local().x

当我运行它时,我明白了:

Traceback (most recent call last):
  File "C:\Documents and Settings\e272nk\Desktop\tst.py", line 3, in <module>
    print t.local().x
AttributeError: 'thread._local' object has no attribute 'x'

属性赋值似乎工作正常,为什么我无法检索值?

这是Windows XP上的Python v2.7.5。

1 个答案:

答案 0 :(得分:3)

您正在创建类local的实例,在其上设置属性,然后丢弃它。然后在下一行中,您正在创建 local的另一个实例,并尝试从中打印某个属性。由于您没有在该实例上设置该属性,因此它没有该属性,并且您收到错误。

As shown in the documentation,您应该创建local的实例并保留它:

import threading as t

locs = t.local()
locs.x = 1
print locs.x