Intel i7-2600K クアッドコアを使用しており、Ubuntu 12.04 でハイパースレッディングが有効になっています。を使用して Python にあるコアの数を確認できることはわかっていますがimport multiprocessing; multiprocessing.cpu_count()
、4 つの物理コアでハイパースレッディングが有効になっているため、8 になります。私が持っている物理コアの数を調べることに興味があります。Pythonでそれを行う方法はありますか? または、ハイパースレッディングが有効になっているかどうかを Python で確認する方法はありますか? よろしくお願いします。
4 に答える
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()にあります。
http://archive.richweb.com/cpu_infoによると、CPU ハイパースレッディングの決定は少し複雑ですが、それでも有用です。
メソッドは Linux 固有であることに注意してください。
Windows では、ハイパースレッディングが有効になっているかどうかを確認するには、pywin32 で WMI マジックを実行できます。
間違った考え!私のCore2Due(ハイパースレートなし)では、同じ出力が得られます:
<on "CPU0", hyperthreading is active>
コード内の文字列を次のように変更する必要があると思います:
if cpu.NumberOfCores < cpu.NumberOfLogicalProcessors
(LowerOrEqual ではなく、Lower のみ)