Python 静态线程变量

标签 python multithreading

我的软件中有许多线程,它们都执行相同的操作,但每个线程从不同的“角度”进行操作。我有一个在整个线程和线程内的对象中使用的“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/

相关文章:

python - 带字典的点积

javascript - 使用 vis.js 从 json 文件填充节点和链接

multithreading - C++ 使用互斥量锁定流运算符

java线程中断,线程为空

c++ - volatile 文件间或线程间?

python - pip install 无法安装依赖项

python - 环境变量的 SECRET_KEY 错误

python - 生成落在多边形内的经纬度坐标网格

c - 简单的中断处理/多线程程序?

java - Thread.sleep 情况下的异常处理和 Threads 情况下的 wait() 方法