我的软件中有许多线程,它们都执行相同的操作,但每个线程从不同的“角度”进行操作。我有一个在整个线程和线程内的对象中使用的“StateModel”对象,但 StateModel 需要为每个线程进行不同的计算。
我不喜欢将 StateModel 对象传递给所有需要它的函数的想法。通常,我会创建一个模块变量,整个程序中的所有对象都可以引用该模块变量中的相同数据。但是,有没有办法让每个线程都有不同且独立的静态模块变量的概念?一种静态线程变量?
谢谢。
最佳答案
这在 threading.local
中实现。
我倾向于不喜欢大多数引用文档的答案,但是......好吧,一切的时间和地点。
A class that represents thread-local data. Thread-local data are data whose values are thread specific. To manage thread-local data, just create an instance of local (or a subclass) and store attributes on it:
mydata = threading.local() mydata.x = 1
The instance’s values will be different for separate threads.
For more details and extensive examples, see the documentation string of the
_threading_local
module.
值得注意的是,您可以让您的类扩展threading.local
,然后您的类就会突然具有线程本地行为。
关于Python 静态线程变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36878588/