我想用Python知道本地机器上cpu的数量。当使用一个优化伸缩的仅用户空间的程序调用时,结果应该是user/real作为时间(1)的输出。
当前回答
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 3.4+: os.cpu_count()。
multiprocessing.cpu_count()是根据这个函数实现的,但如果os.cpu_count()返回None(“不能确定cpu数量”)则会引发NotImplementedError。
对于python 3.4以上版本,可以使用
import os
os.cpu_count()
如果你正在寻找linux命令nproc的等价物。你有这个选项
len(os.sched_getaffinity(0))
你也可以使用“joblib”来达到这个目的。
import joblib
print joblib.cpu_count()
此方法将为您提供系统中的cpu数量。但是Joblib需要安装。更多关于joblib的信息可以在这里找到https://pythonhosted.org/joblib/parallel.html
或者,您可以使用python的numexpr包。它有很多简单的功能,有助于获取关于系统cpu的信息。
import numexpr as ne
print ne.detect_number_of_cores()
如果你没有Python 2.6,另一个选择:
import commands
n = commands.getoutput("grep -c processor /proc/cpuinfo")
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 glob多个文件类型
- 如何可靠地打开与当前运行脚本在同一目录下的文件
- Python csv字符串到数组
- 如何在Python中进行热编码?
- 如何嵌入HTML到IPython输出?
- 在Python生成器上使用“send”函数的目的是什么?
- 是否可以将已编译的.pyc文件反编译为.py文件?
- Django模型表单对象的自动创建日期
- 在Python中包装长行
- 如何计算两个时间串之间的时间间隔
- 我如何才能找到一个Python函数的参数的数量?
- 您可以使用生成器函数来做什么?
- 将Python诗歌与Docker集成
- 提取和保存视频帧
- 使用请求包时出现SSL InsecurePlatform错误