GILでの反射

GILは何ですか?

GILは、グローバルインタープリタロックの略CPythonの導入コンセプト最も一般的なPythonインタプリタです。GILは、複数のスレッドを同時に実行(スレッド)を避けるためです。メモリ管理は、安全なCPythonのスレッドではないので、このロックの存在は、短い時間のために、必要であるだけでなく、削除することはできません。ので
GILグローバルによる排他的です。グローバルロックが効率が小さな衝撃ではないマルチスレッドになりますがあることは間違いありません。パイソンにもほぼ同じシングルスレッドプログラムです。

影響を及ぼす

GIL最大の問題は、マルチスレッドのPythonプログラムであり、マルチコアCPUを利用することはできません。
あなたならばGILは唯一、それらのプログラムは、CPU(計算)に大きく依存している影響を与えます

影響を回避する方法

マルチプロセスと代替スレッド

複数のプロセスの代わりに、複数のスレッドを使用すること。各プロセスは、独自の独立したGILを持っているので、GILプロセスの間には競争がありません。
短所:取得するために生きているコンテキストラップthread.Lockの三行で、グローバル変数を宣言し、それをスレッドに簡単にスレッド間で変数を共有しました。プロセス間のマルチデータは、本体のみChengshen明でキューを介して、共有メモリの再利用方法を置くか、または取得しながら、お互いを見ることができません。

他の通訳を使用してください

JPythonのとIronPythonのGIL問題はないが、比較的少数。貧弱な機能と性能ではなく、良い選択。

他の言語の使用のコア

並列の高性能コンピューティング・プログラムは、C又は単に他の言語で書かれたコアモジュールの一部とみなすことができる場合

概要は、GILは、時間の長い期間のために存在し続けますが、それを改善していきます。

おすすめ

転載: www.cnblogs.com/jkhere/p/11494511.html