[解決済み] Pythonのスレッドはどのように動作するのか、またPythonスレッド特有の落とし穴は何か?
質問
Pythonでスレッドがどのように動作するのかを理解しようとしているのですが、どのように動作するのかについて良い情報を見つけるのは難しいです。私はリンクか何かを見逃しているだけかもしれませんが、公式ドキュメントはこのテーマについてあまり徹底していないように思えますし、私は良い書き込みを見つけることができませんでした。
私が知る限り、一度に実行できるのは 1 つのスレッドのみで、アクティブなスレッドは 10 命令ごとに切り替わるのでしょうか?
どこに良い説明があるのでしょうか、または提供できるのでしょうか。また、Pythonでスレッドを使用しているときに遭遇する一般的な問題を認識しておくことは非常に素晴らしいことです。
どのように解決するのですか?
グローバルインタープリタロック (GIL) のため、一度に実行できるスレッドは1つだけです。これに関するいくつかの洞察に満ちたリンクがあります。
- http://www.artima.com/weblogs/viewpost.jsp?thread=214235
- http://smoothspan.wordpress.com/2007/09/14/guido-is-right-to-leave-the-gil-in-python-not-for-multicore-but-for-utility-computing/
最後のリンクから、興味深い引用がありました。
<ブロッククオートすべての意味を説明しましょう。 スレッドは同じ仮想マシン内で実行され スレッドは同じ仮想マシン内で実行され、したがって同じ 物理マシン上で動作します。 プロセスは プロセスは、同じ物理マシン上でも 別の物理マシンで実行できます。 もし を中心にアプリケーションを構築した場合 スレッドを中心にアプリケーションを構築した場合、複数のマシンにアクセスすることはできません。 複数のマシンにアクセスすることはありません。 そのため のコア数まで拡張できます。 1台のマシンに搭載されているコアの数だけスケールすることができます(やがてかなりの数になるでしょう)。 しかし、本当にウェブのスケールに到達するためには スケールするためには、複数マシンの問題を解決する必要があります。 複数のマシンの問題を解決する必要があります。
マルチコアを使いたい場合。 ピプロセッシング は、実際の並列化を行うためのプロセスベースのAPIを定義しています。また PEP には、いくつかの興味深いベンチマークも含まれています。
関連
-
[解決済み] C++11では、標準化されたメモリモデルが導入されました。その意味するところは?そして、C++プログラミングにどのような影響を与えるのでしょうか?
-
[解決済み] スクリプトを実行しているPythonのバージョンを確認するにはどうしたらいいですか?
-
[解決済み] Pythonが解釈される場合、.pycファイルとは何ですか?
-
[解決済み] Pythonの@propertyデコレーターはどのように機能するのでしょうか?
-
[解決済み] mixinとは何か、なぜ有用なのか?
-
[解決済み] Pythonの「名前付きタプル」とは何ですか?
-
[解決済み】type()とisinstance()の違いは何ですか?)
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み] pycharmがタブをスペースに自動変換する
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonです。未束縛のメソッドを束縛する?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Pythonのargparseを使った隠し引数の作成
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] pandasのタイムゾーンに対応したDateTimeIndexを、特定のタイムゾーンに対応したナイーブなタイムスタンプに変換する。
-
[解決済み] virtualenv の `--no-site-packages` オプションを元に戻す。
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法