12

Intel i7-2600K クアッドコアを使用しており、Ubuntu 12.04 でハイパースレッディングが有効になっています。を使用して Python にあるコアの数を確認できることはわかっていますがimport multiprocessing; multiprocessing.cpu_count()、4 つの物理コアでハイパースレッディングが有効になっているため、8 になります。私が持っている物理コアの数を調べることに興味があります。Pythonでそれを行う方法はありますか? または、ハイパースレッディングが有効になっているかどうかを Python で確認する方法はありますか? よろしくお願いします。

4

4 に答える 4

7

Mac でハイパースレッディング情報を取得するには、次を使用できます。

os.popen('sysctl hw').readlines()[1:20]

'hw.activecpu'値を値と比較します'hw.physicalcpu'。前者はハイパースレッディングを含む CPU の数です。'hw.physicalcpu'または、 から返された値と比較することもできますmultiprocessing.cpu_count()

Linux では、以下を使用して同様のことができます。

os.popen('lscpu').readlines()

'Socket(s)'値と値を掛けて、'Core(s) per socket'物理 CPU の数を取得します。繰り返しますが、この番号を と照合できますmultiprocessing.cpu_count()

私は Windows を使用していないので、そこでお手伝いすることはできませんが、他の人がこの方向でいくつかのアイデアを持っているようです

これに関連する例は、こちらのhardware_info()にあります。

于 2013-03-01T02:00:08.717 に答える
3

http://archive.richweb.com/cpu_infoによると、CPU ハイパースレッディングの決定は少し複雑ですが、それでも有用です。

メソッドは Linux 固有であることに注意してください。

于 2012-10-15T19:25:10.440 に答える
0

Windows では、ハイパースレッディングが有効になっているかどうかを確認するには、pywin32 で WMI マジックを実行できます。

間違った考え!私のCore2Due(ハイパースレートなし)では、同じ出力が得られます:

<on "CPU0", hyperthreading is active>

コード内の文字列を次のように変更する必要があると思います:

if cpu.NumberOfCores < cpu.NumberOfLogicalProcessors

(LowerOrEqual ではなく、Lower のみ)

于 2015-12-01T05:29:44.277 に答える