Python静态线程变量

时间:2016-04-27 01:11:11

标签: python multithreading

我的软件中有许多线程都做同样的事情,但每个线程都是从不同的“视角”运行。我有一个“StateModel”对象,在整个线程和线程中的对象中使用,但StateModel需要针对每个线程进行不同的计算。

我不喜欢将StateModel对象传递给需要它的所有函数。通常,我会创建一个模块变量,整个程序中的所有对象都可以从模块变量中引用相同的数据。但是,有没有办法让静态模块变量的概念与每个线程不同且独立?一种静态的Thread变量?

感谢。

1 个答案:

答案 0 :(得分:3)

这是在threading.local中实施的。

我倾向于不喜欢主要引用文档的答案,但是......好吧,时间和地点适合一切。

  

表示线程本地数据的类。线程本地数据是数据   其值是特定于线程的。仅管理线程本地数据   创建本地(或子类)的实例并存储属性   它:

mydata = threading.local() 
mydata.x = 1 
     

实例的值将是   不同的线程。

     

有关更多详细信息和大量示例,请参阅文档字符串   _threading_local模块。

值得注意的是,你可以让你的类扩展threading.local,突然你的类具有线程本地行为。