使用Python,如何以通用方式返回CPU使用率,内存使用量(免费,使用等),进程数等信息,以便在Linux,Windows,BSD等上运行相同的代码?
或者,如何在所有上述系统中返回此信息,并且只有在该操作系统确实是操作环境时才运行该操作系统的特定代码?
答案 0 :(得分:17)
关于跨平台:最好的办法是编写特定于平台的代码,然后有条件地导入它。 e.g。
import sys
if sys.platform == 'win32':
import win32_sysinfo as sysinfo
elif sys.platform == 'darwin':
import mac_sysinfo as sysinfo
elif 'linux' in sys.platform:
import linux_sysinfo as sysinfo
#etc
print 'Memory available:', sysinfo.memory_available()
对于特定资源,正如Anthony所指出的,您可以在linux下访问/proc
。对于Windows,您可以在Microsoft Script Repository处进行搜索。我不知道在哪里可以获得有关Mac的信息,但我可以想到一个很棒的网站,你可以问: - )
答案 1 :(得分:5)
在Linux环境中,您可以从/ proc文件系统中读取。
~$ cat /proc/meminfo
MemTotal: 2076816 kB
MemFree: 130284 kB
Buffers: 192664 kB
Cached: 1482760 kB
SwapCached: 0 kB
Active: 206584 kB
Inactive: 1528608 kB
HighTotal: 1179484 kB
HighFree: 120768 kB
LowTotal: 897332 kB
LowFree: 9516 kB
SwapTotal: 2650684 kB
SwapFree: 2650632 kB
Dirty: 64 kB
Writeback: 12 kB
AnonPages: 59668 kB
Mapped: 22008 kB
Slab: 200744 kB
PageTables: 1220 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 3689092 kB
Committed_AS: 263892 kB
VmallocTotal: 114680 kB
VmallocUsed: 3604 kB
VmallocChunk: 110752 kB
答案 2 :(得分:2)
答案 3 :(得分:2)
psutil应该提供您所需要的内容:
[...]跨平台库,用于检索有关正在运行的进程和系统利用率(CPU,内存,磁盘,网络)的信息[...]
[...]支持Linux,Windows,OSX,FreeBSD和Sun Solaris,32位和64位架构[...]
答案 4 :(得分:1)
答案 5 :(得分:1)
看起来您希望获得比标准Python库提供的更多信息。如果我是你,我会下载'ps'或'top'的源代码,或相同的Gnome / KDE版本,或任何数量的系统监控/图形程序,这些程序更有可能拥有所有必要的Unix交叉平台位,看看他们做了什么,然后使用ctypes进行必要的本机调用。
检测平台很简单。例如,对于ctypes,您可能会尝试加载libc.so,如果抛出异常,请尝试加载“msvcrt.dll”等等。更不用说用os.name简单地检查操作系统的名称。然后,只需将对新跨平台API的调用委派给适当的特定于平台(抱歉)的实现。
完成后,不要忘记将生成的包上传到pypi。
答案 6 :(得分:0)
目标是PSI(Python系统信息)项目,但它们还没有涵盖Windows。
您可以使用PSI并重新like this one并创建一个满足您需求的基本库。