我想用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()相同的数字,这两个都没有逻辑关键字参数。
其他回答
另一种选择是使用psutil库,它在这些情况下总是很有用:
>>> import psutil
>>> psutil.cpu_count()
2
这应该可以在psutil支持的任何平台上工作(Unix和Windows)。
注意在某些情况下多处理。cpu_count可能引发NotImplementedError,而psutil将能够获得cpu的数量。这只是因为psutil首先尝试使用多处理所使用的相同技术,如果这些技术失败,它还会使用其他技术。
不知道如何添加到代码或回复消息,但这里有对jython的支持,你可以在放弃之前添加进去:
# jython
try:
from java.lang import Runtime
runtime = Runtime.getRuntime()
res = runtime.availableProcessors()
if res > 0:
return res
except ImportError:
pass
你也可以使用“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()
如果你有版本为>= 2.6的python,你可以简单地使用
import multiprocessing
multiprocessing.cpu_count()
http://docs.python.org/library/multiprocessing.html#multiprocessing.cpu_count
这将提供超线程CPU计数
multiprocessing.cpu_count () os.cpu_count ()
这些参数提供了虚拟机CPU计数
psutil.cpu_count () numexpr.detect_number_of_cores ()
只有在虚拟机上工作时才重要。
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录