的Python:跨平台的解决方案,以检测物理非HT的CPU?(Python: Cross-platf

2019-09-16 12:57发布

我试图检测使用跨平台的方式在机器上的非超线程内核的数量。

多重的CPU_COUNT只检测处理器的总数,而我可以grep在Linux机器上的/ proc / cpuinfo中找到答案。 不过,我正在寻找一个Windows的解决方案。

该新闻组线程帮了一点,但我仍然没有找到答案。

Answer 1:

您可以使用添金的WMI绑定访问Windows关于CPU的WMI信息。 见Tim的WMI模块食谱 。 您probabably要使用Win32_Processor类-请参阅Microsoft文档 。

请注意,在备注栏微软文档指出:

要确定是否超线程的处理器启用,比较NumberOfLogicalProcessors和NumberOfCores。 如果超线程在BIOS中的处理器启用,然后NumberOfCores小于NumberOfLogicalProcessors。 例如,包含两个处理器的双处理器系统启用超线程可以运行四个线程或程序或同时进行。 在这种情况下,NumberOfCores是2和NumberOfLogicalProcessors是4。

达格Wieer的博客显示了从提取超线程信息的方式/proc/cpuinfo在Linux上。

我想,如果第一和第二线的输出

cat /proc/cpuinfo | egrep 'physical|processor' | grep -v sizes | \
                    tail -n2 | cut -d : -f 2`

不同的是,超线程已启用。



Answer 2:

独立于平台和Python标准库:

psutil.cpu_count(逻辑=假)



Answer 3:

对于一个独立于平台的方法,请参见Python绑定hwloc:

#!/usr/bin/env python
import hwloc
topology = hwloc.Topology()
topology.load()
print topology.get_nbobjs_by_type(hwloc.OBJ_CORE)

hwloc的设计是跨操作系统和架构便于携带。



文章来源: Python: Cross-platform solution to detect physical non-HT CPUs?