1

Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz でマルチスレッド アプリケーション (Python2.7.3) を実行しています。コアを 1 つしか使用しないと思っていましたが、「top」コマンドを使用すると、python プロセスがコア番号を常に変更していることがわかります。top コマンドで「SHOW THREADS」を有効にすると、さまざまなコアで動作しているさまざまなスレッド プロセスが表示されます。

誰でもこれを説明できますか?マルチスレッドがシングルコアで実行されるという理論からわかっているので、気になります。

4

2 に答える 2

3

まず、マルチスレッドとは逆のことを意味します。つまり、複数のコアが (スレッドを介して) 同時に利用されます。これに関しては、CPython は確かに不自由ですが、C コード (これには標準ライブラリの一部だけでなく、Numpy のような拡張モジュールも含まれます) を呼び出すたびに、Python コードの同時実行を防止するロックが解除される場合があります。複数のスレッドを使用することもできますが、同時に Python を解釈することはありません (代わりに、非常に頻繁に交代します)。あなたは「Pythonプロセス」についても話しています - 用語を混乱させていますか、それともこの「マルチスレッド」Pythonアプリケーションは実際にはマルチプロセッシングですか? もちろん、複数の Python プロセスを同時に実行できます。

しかし、あなたの言葉遣いから、私は別の混乱の原因を疑っています。単一のスレッドでも複数のコアで実行できます...同時にではありません。どのスレッドがどの CPU で実行されているかは、オペレーティング システム次第であり、OS スケジューラは、中断される前にスレッドが実行されていたのと同じ CPU にスレッドを再割り当てするとは限りません (David Schwartz がコメントがありますが、重要ではありません)。つまり、単一のスレッド/プロセスが CPU から CPU にジャンプするのは完全に正常です。

于 2012-09-02T03:01:32.407 に答える
-1

スレッドは、利用可能な場合に複数のコアを利用するように設計されています。コアが 1 つしかない場合は、それらも 1 つのコアで実行されます。:-)

心配する必要はありません。「意図したとおりに機能している」ことが観察されます。

于 2012-09-02T02:56:25.993 に答える