だから、私はStackless Pythonをいじっていて、頭の中に疑問が浮かびました。これは「想定」または「常識」かもしれませんが、スタックレス サイトのどこにも実際に書かれているのを見つけることができませんでした。
Stackless Pythonはマルチコア CPU を利用しますか? 通常のPythonでは、GILが常に存在し、複数のコアを(真に)使用するには、複数のプロセスを使用する必要がありますが、これはスタックレスにも当てはまりますか?
だから、私はStackless Pythonをいじっていて、頭の中に疑問が浮かびました。これは「想定」または「常識」かもしれませんが、スタックレス サイトのどこにも実際に書かれているのを見つけることができませんでした。
Stackless Pythonはマルチコア CPU を利用しますか? 通常のPythonでは、GILが常に存在し、複数のコアを(真に)使用するには、複数のプロセスを使用する必要がありますが、これはスタックレスにも当てはまりますか?
スタックレス python は、それが実行されるマルチコア環境を利用しません。
これは、プログラマーがスレッドベースのプログラミングを利用できるため、スタックレスに関するよくある誤解です。多くの人にとって、これら 2 つは密接に絡み合っていますが、実際には 2 つの別個のものです。
内部的には、スタックレスはラウンドロビン スケジューラを使用してすべてのタスクレット(マイクロ スレッド) をスケジュールしますが、タスクレットを別のタスクレットと同時に実行することはできません。つまり、1 つのタスクレットがビジー状態の場合、他のタスクレットはそのタスクレットが制御を放棄するまで待機する必要があります。デフォルトでは、スケジューラーはタスクレットを停止せず、プロセッサー時間を別のタスクレットに与えません。Stackless.schedule() を使用するか、計算を終了することによって、スケジュール キューの最後にスケジュールを戻すのは、タスクレットの責任です。
したがって、複数のコアが使用可能な場合でも、すべてのタスクレットが順次実行されます。
Stackless がマルチコアをサポートしていない理由は、これによりスレッドが非常に簡単になるためです。そして、これがまさにスタックレスのすべてです。
Stackless Python は、Python プログラミング言語の拡張バージョンです。これにより、プログラマーは、従来のスレッドに関連するパフォーマンスや複雑さの問題を抱えることなく、スレッドベースのプログラミングの利点を享受できます。Stackless が Python に追加するマイクロスレッドは、安価で軽量な便利なツールであり、適切に使用すれば、次の利点があります。
- プログラム構造の改善。
- より読みやすいコード。
- プログラマーの生産性が向上します。
複数のコアとスタックレスに関する詳細情報へのリンクを次に示します。