【发布时间】:2010-10-02 19:52:48
【问题描述】:
根据OS-agnostic question,特别是this response,类似于 Linux 上的 /proc/meminfo 等提供的数据,我如何使用 Python 从 OS X 读取系统信息(包括但不限于内存使用情况)。
【问题讨论】:
标签: python macos operating-system
根据OS-agnostic question,特别是this response,类似于 Linux 上的 /proc/meminfo 等提供的数据,我如何使用 Python 从 OS X 读取系统信息(包括但不限于内存使用情况)。
【问题讨论】:
标签: python macos operating-system
您可以从命令行实用程序sysctl 和vm_stat(以及ps,如this question)获取大量系统信息。
如果您没有找到更好的方法,您可以随时使用subprocess 调用这些方法。
【讨论】:
平台模块中唯一可以访问的东西非常好,但它非常有限(cpu、操作系统版本、架构等)。对于 cpu 使用率和正常运行时间,我认为您必须将命令行实用程序“uptime”和“vm_stat”包装起来。
我为 vm_stat 构建了一个,另一个由你决定;-)
import os, sys
def memoryUsage():
result = dict()
for l in [l.split(':') for l in os.popen('vm_stat').readlines()[1:8]]:
result[l[0].strip(' "').replace(' ', '_').lower()] = int(l[1].strip('.\n '))
return result
print memoryUsage()
【讨论】:
我做了更多的谷歌搜索(寻找“OS X /proc”)——看起来 sysctl 命令可能是您想要的,尽管我不确定它是否会为您提供所需的所有信息。这是手册页:http://developer.apple.com/DOCUMENTATION/Darwin/Reference/ManPages/man8/sysctl.8.html
另外,wikipedia。
【讨论】:
这是一个基于 MacFUSE 的 /proc fs:
http://www.osxbook.com/book/bonus/chapter11/procfs
如果您可以控制正在运行您的 python 程序的盒子,那么它可能是一个合理的解决方案。无论如何,有一个 /proc 可以查看是件好事!
【讨论】:
我正在寻找同样的东西,我注意到这个问题没有公认的答案。在最初提出问题后的中间时间,发布了一个名为 psutil 的 python 模块:
https://github.com/giampaolo/psutil
对于内存利用率,您可以使用以下内容:
>>> psutil.virtual_memory()
svmem(total=8374149120L, available=2081050624L, percent=75.1, used=8074080256L, free=300068864L, active=3294920704, inactive=1361616896, buffers=529895424L, cached=1251086336)
>>> psutil.swap_memory()
sswap(total=2097147904L, used=296128512L, free=1801019392L, percent=14.1, sin=304193536, sout=677842944)
>>>
还有cpu利用率、进程管理、磁盘和网络等功能。模块中唯一遗漏的是一个用于检索平均负载的函数,但如果您在类 UNIX 系统上,python 标准库有 os.getloadavg()。
psutil 声称支持 Linux、Windows、OSX、FreeBSD 和 Sun Solaris,但我只尝试过 OSX mavericks 和 fedora 20。
【讨论】: