1. ホーム
  2. java

[解決済み] なぜJava仮想マシンにはGILがないのか?なぜPythonはそんなにGILが必要なのですか?

2022-05-02 10:02:56

質問

Java仮想マシンがグローバルインタープリタロック(GIL)を必要とせずにスレッドをうまく実装できる一方で、Pythonはそのような悪を必要とするのは、何が根本的に違うのかについて、誰かが洞察を与えてくれることを期待しています。

どうすれば解決するの?

Python(言語)はGILを必要としません(だからこそ、JVM [Jython] や .NET [IronPython] で完璧に実装でき、それらの実装は自由にマルチスレッド化できるのです)。CPython(一般的な実装)は、コーディング(特にガベージコレクション機構のコーディング)と、スレッドセーフでないCコードライブラリ(昔は大量にありました)の統合を容易にするために、常にGILを使用しています。

その アンラッドスワロー プロジェクトは、他の野心的な目標に加え、次のようなことを行っています。 計画 そのサイトを引用すると、"さらに、私たちはGILを取り除き、Pythonのマルチスレッドの状態を修正するつもりです。これは、IBMのRecycler (Bacon et al, 2001)のような、より洗練されたGCシステムの実装によって可能だと考えています"。