Python:检测物理非HT CPU的跨平台解决方案?

时间:2012-04-14 08:26:40

标签: python windows linux multiprocessing

我正在尝试使用跨平台方法检测计算机上的非超线程核心数量。

多处理的cpu_count只能检测处理器的总数,我可以在Linux机器上找到grep / proc / cpuinfo来找到答案。但是,我正在寻找Windows解决方案。

这个新闻组thread有所帮助,但我仍然没有找到答案。

3 个答案:

答案 0 :(得分:8)

平台独立和python标准库:

  

psutil.cpu_count(逻辑=假)

答案 1 :(得分:3)

您可以使用Tim Golden的WMI绑定来访问有关Windows上CPU的wmi信息。见Tim's wmi module cookbook。您可能想要使用Win32_Processor类 - 请参阅 the Microsoft documentation

请注意,在备注部分中,Microsoft文档声明:

  
    

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

  

Dag Wieer's博客显示了一种从Linux上/proc/cpuinfo提取超线程信息的方法。

我认为,如果输出第一行和第二行

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

不同,启用了超线程。

答案 2 :(得分:0)

对于与平台无关的方法,请参阅与hwloc的python绑定:

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

hwloc旨在跨操作系统和体系结构移植。