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确保Java在主内存中存储和更新变量值.如果没有volatile,JVM可以自由地将值存储在CPU缓存中,这会对在不同CPU核心上运行的不同线程不可见的值进行更新的副作用(在同一核心上并发运行的线程会看到价值).
Python不会这样做. Python将所有对象存储在主内存中的堆上.此外,由于Python解释器循环使用锁定(GIL)的方式,一次只有一个线程将主动运行Python代码.不同的线程永远不可能在不同的CPU上运行Python解释器循环.
所以你不需要在Python中使用volatile,没有这样的概念,你不需要担心它.