1. ホーム
  2. python

[解決済み] Pythonのスレッドはどのように動作するのか、またPythonスレッド特有の落とし穴は何か?

2023-04-08 08:59:25

質問

Pythonでスレッドがどのように動作するのかを理解しようとしているのですが、どのように動作するのかについて良い情報を見つけるのは難しいです。私はリンクか何かを見逃しているだけかもしれませんが、公式ドキュメントはこのテーマについてあまり徹底していないように思えますし、私は良い書き込みを見つけることができませんでした。

私が知る限り、一度に実行できるのは 1 つのスレッドのみで、アクティブなスレッドは 10 命令ごとに切り替わるのでしょうか?

どこに良い説明があるのでしょうか、または提供できるのでしょうか。また、Pythonでスレッドを使用しているときに遭遇する一般的な問題を認識しておくことは非常に素晴らしいことです。

どのように解決するのですか?

グローバルインタープリタロック (GIL) のため、一度に実行できるスレッドは1つだけです。これに関するいくつかの洞察に満ちたリンクがあります。

最後のリンクから、興味深い引用がありました。

<ブロッククオート

すべての意味を説明しましょう。 スレッドは同じ仮想マシン内で実行され スレッドは同じ仮想マシン内で実行され、したがって同じ 物理マシン上で動作します。 プロセスは プロセスは、同じ物理マシン上でも 別の物理マシンで実行できます。 もし を中心にアプリケーションを構築した場合 スレッドを中心にアプリケーションを構築した場合、複数のマシンにアクセスすることはできません。 複数のマシンにアクセスすることはありません。 そのため のコア数まで拡張できます。 1台のマシンに搭載されているコアの数だけスケールすることができます(やがてかなりの数になるでしょう)。 しかし、本当にウェブのスケールに到達するためには スケールするためには、複数マシンの問題を解決する必要があります。 複数のマシンの問題を解決する必要があります。

マルチコアを使いたい場合。 ピプロセッシング は、実際の並列化を行うためのプロセスベースのAPIを定義しています。また PEP には、いくつかの興味深いベンチマークも含まれています。