1

私の知る限り、Python では、マルチコア環境で通常のスレッドを使用すると、通常、GIL が途中で発生し、パフォーマンスに悪影響を及ぼします (スレッドが GIL を常に取得および解放しようとし、スレッド/プロセッサ間の多くのコンテキスト切り替え)。

そのため、多くの人がグリーン スレッド (eventlet など) を使い始めています。イベントレット ライブラリを使用すると、複数のグリーン スレッドを協調して動作させることができ、単一のプロセッサで完全に動作します (同期の問題が少なく、迅速な生成/効率など)。

私の質問は、マルチコア OS を使用していて、Python アプリケーションを設計する場合、協調スレッド (グリーン スレッド) とマルチコア プロセッサの両方を利用するために従うべきベスト プラクティスまたは設計パターンは何かということです。

4

1 に答える 1

1

Youtube の成長に関するテック トーク [1] で最初に見た非常に一般的なアプローチは次のとおりです。ボトルネック、飲酒、睡眠などを特定して修正し、再びボトルネックを継続します。

したがって、作業が多すぎてコアがアイドル状態になっている場合は、より多くのプロセスを実行してください同じアプローチを使用すると、いつプロセス プールを停止または縮小するかがわかります。

[1] https://www.youtube.com/watch?v=ZW5_eEKEC28

于 2013-06-09T12:37:27.253 に答える