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