相当于Python中的Java volatile

2019-08-04 00:00:00 python volatile 相当于

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,没有这样的概念,你不需要担心它.

相关文章