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