Python 是否具有与 Java volatile
概念等价的概念?
在Java中有一个关键字volatile
。据我所知,当我们在声明变量时使用 volatile
时,对该变量值的任何更改都将对同时运行的所有线程可见。
我想知道 Python 中是否有类似的东西,以便在函数中更改变量的值时,它的值将对同时运行的所有线程可见。
最佳答案
As far as I know, when we use volatile while declaring a variable, any change to the value of that variable will be visible to all threads running at the same time.
volatile
比这更细微。 volatile
确保 Java 在主内存 中存储和更新变量值。如果没有 volatile
,JVM 可以自由地将值存储在 CPU 缓存中,这会产生副作用,即对运行在不同 CPU 上的不同线程不可见的值更新核心(在同一核心上同时运行的线程会看到该值)。
Python 不会这样做。 Python 将所有对象 存储在主内存中的堆上。此外,由于 Python 解释器循环使用锁定(GIL)的方式,一次只有一个线程会主动运行 Python 代码。不同的线程不可能在不同的 CPU 上运行 Python 解释器循环。
所以你不需要在Python中使用volatile
,没有这个概念,你不需要担心。
关于java - 相当于 Python 中的 Java volatile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53780267/