我想用Python知道本地机器上cpu的数量。当使用一个优化伸缩的仅用户空间的程序调用时,结果应该是user/real作为时间(1)的输出。


当前回答

如果你想知道物理内核的数量(不是虚拟超线程内核),这里有一个独立于平台的解决方案:

psutil.cpu_count(logical=False)

https://github.com/giampaolo/psutil/blob/master/INSTALL.rst

注意,logical的默认值是True,所以如果你想包含超线程核心,你可以使用:

psutil.cpu_count()

这将给出与os.cpu_count()和multiprocessing.cpu_count()相同的数字,这两个都没有逻辑关键字参数。

其他回答

这可能适用于我们这些使用不同操作系统的人,但想要获得所有世界的最好:

import os
workers = os.cpu_count()
if 'sched_getaffinity' in dir(os):
    workers = len(os.sched_getaffinity(0))

multiprocessing.cpu_count()将返回逻辑CPU的数量,因此如果您有一个带有超线程的四核CPU,它将返回8。如果你想要物理cpu的数量,使用hwloc的python绑定:

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

hwloc被设计为跨操作系统和架构可移植。

如果你没有Python 2.6,另一个选择:

import commands
n = commands.getoutput("grep -c processor /proc/cpuinfo")

如果您正在寻找打印系统中的核数。

试试这个:

import os 
no_of_cores = os.cpu_count()
print(no_of_cores)

这应该会有所帮助。

这将提供超线程CPU计数

multiprocessing.cpu_count () os.cpu_count ()

这些参数提供了虚拟机CPU计数

psutil.cpu_count () numexpr.detect_number_of_cores ()

只有在虚拟机上工作时才重要。