クロスプラットフォーム メソッドを使用して、マシン上の非ハイパースレッディング コアの数を検出しようとしています。
Multiprocessing のcpu_countはプロセッサの総数のみを検出します。Linux マシンで /proc/cpuinfo を grep して答えを見つけることができます。ただし、Windows ソリューションを探しています。
このニュースグループのスレッドは少し役に立ちましたが、まだ答えが見つかりません。
プラットフォームに依存せず、Python 標準ライブラリ内:
psutil.cpu_count(logical=False)
Tim GoldenのWMIバインディングを使用して、Windows上のCPUに関するwmi情報にアクセスできます。Timのwmiモジュールクックブックを参照してください。おそらくクラスを使用したいと思うでしょう-MicrosoftのドキュメントWin32_Processor
を参照
してください。
備考セクションで、Microsoftのドキュメントには次のように記載されていることに注意してください。
プロセッサでハイパースレッディングが有効になっているかどうかを判断するには、NumberOfLogicalProcessorsとNumberOfCoresを比較します。プロセッサのBIOSでハイパースレッディングが有効になっている場合、NumberOfCoresはNumberOfLogicalProcessorsよりも小さくなります。たとえば、ハイパースレッディングが有効になっている2つのプロセッサを含むデュアルプロセッサシステムでは、4つのスレッドまたはプログラムを同時に実行できます。この場合、NumberOfCoresは2で、NumberOfLogicalProcessorsは4です。
Dag Wieerのブログは、/proc/cpuinfo
Linux上でハイパースレッディング情報を抽出する方法を示しています。
の1行目と2行目の出力が
cat /proc/cpuinfo | egrep 'physical|processor' | grep -v sizes | \
tail -n2 | cut -d : -f 2`
が異なり、ハイパースレッディングが有効になっています。