PythonにはJava volatile
の概念と同等のものがありますか?
Javaにはキーワードvolatile
があります。私が知る限り、変数を宣言するときにvolatile
を使用すると、その変数の値が変更されます同時に実行されているすべてのスレッドに表示されます。
Pythonにも同様のものが存在するかどうかを知りたいので、関数で変数の値が変更されたときに、その値が同時に実行されているすべてのスレッドに表示されます。
私の知る限り、変数を宣言するときにvolatileを使用すると、その変数の値に対する変更は、同時に実行されているすべてのスレッドに表示されます。
volatile
はそれより少し微妙です。 volatile
は、Javaが変数値を格納および更新することを保証しますメインメモリ内。volatile
がない場合、JVMは代わりに、CPUキャッシュ内の値副作用異なるCPUコアで実行されている異なるスレッド(同じコアで同時に実行されているスレッド)からは見えない値への更新の更新値を参照してください)。
Pythonはこれを行いません。 Pythonストアすべてのオブジェクトヒープ、メインメモリに保存されます。さらに、Pythonインタープリタループがロックを使用する方法により( GIL)、一度に1つのスレッドのみがアクティブに実行されますPythonコード。異なるスレッドがPythonインタープリターループを実行している可能性は決してありません。別のCPU。
したがって、Pythonでvolatile
を使用する必要はありません。そのような概念はなく、心配する必要もありません。