Python 静态线程变量

Crb*_*gan 4 python multithreading

我的软件中有许多线程,它们都执行相同的操作,但每个线程从不同的“角度”进行操作。我有一个在整个线程和线程内的对象中使用的“StateModel”对象,但 StateModel 需要为每个线程进行不同的计算。

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

谢谢。

roi*_*ppi 6

这是在 中实现的threading.local。

\n\n

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

\n\n
\n

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

\n\n
mydata = threading.local() \nmydata.x = 1 \n
Run Code Online (Sandbox Code Playgroud)\n\n

对于不同的线程,实例\xe2\x80\x99s 值将不同。

\n\n

有关更多详细信息和广泛的示例,请参阅模块的文档字符串\n _threading_local。

\n
\n\n

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

\n