私はPythonのグローバルインタープリタロックでパフォーマンスに問題はありませんでした。一般的なアドバイスにもかかわらず、GILは自動的にスレッドの安全性を保証するわけではありませんが、一般に10スレッド以上のプログラムがあります。一緒に、一緒に、時間。それはやや複雑な非同期メッセージングシステムです。スレッドとPythonのグローバルインタープリタロックでパフォーマンスに問題がありません。スケーラビリティ?
私はこのプログラムでCeleryを使用していてもマルチプロセッシングを理解していますが、この問題セットのマルチプロセッシングを実行するには、ソリューションが非常に複雑でなければなりません。
私は2.7を実行しており、パフォーマンスの低下にもかかわらず再帰的なロックを使用しています。
私の質問はこれです:GILのスケーリングの問題に遭遇しますか?これまでのところパフォーマンスの問題は見られませんでした。これを測定するには問題があります。あなたがヒットし、ちょうど窒息し始めるいくつかのスレッドや類似のものがありますか? GILのパフォーマンスは、シングルコアCPU上でマルチスレッドコードを実行すると大きく異なるのですか?
ありがとうございます!
GILがスレッドの安全を保証するとは思わないでしょう。インタプリタ内部を保護するために存在するため、実際にクラッシュすることはなく、偶然にもいくつかのタイプの操作(Cで実装され、すべての状態依存の作業を1バイトコード命令で行う)をアトミックにします。しかし、2つの異なるスレッドで 'x + = 1'を安全に実行することはできません。なぜなら、そのバイトコードは' x'をロードし、1を加え、 'x'に戻って格納するためです。その間の任意のステップで。 GILは論理的な安全性のためではなく、インタプリタの完全性のためのものです。残りの部分はロックを使用します。 – ShadowRanger