如何在Python中获取当前系统状态(当前CPU、RAM、空闲磁盘空间等)?理想情况下,它可以同时适用于Unix和Windows平台。
从我的搜索中似乎有一些可能的方法:
使用像PSI这样的库(目前似乎没有积极开发,在多个平台上也不支持)或像pystatgrab这样的库(从2007年开始似乎没有活动,也不支持Windows)。
使用平台特定的代码,例如使用os.popen("ps")或*nix系统的类似代码,以及ctypes.windll中的MEMORYSTATUS。Windows平台的kernel32(请参阅ActiveState上的配方)。可以将所有这些代码片段放在一个Python类中。
这并不是说这些方法不好,而是是否已经有一种支持良好的多平台方式来做同样的事情?
通过结合tqdm和psutil,可以获得实时的CPU和RAM监控。当运行繁重的计算/处理时,它可能很方便。
它也可以在Jupyter中工作,无需任何代码更改:
from tqdm import tqdm
from time import sleep
import psutil
with tqdm(total=100, desc='cpu%', position=1) as cpubar, tqdm(total=100, desc='ram%', position=0) as rambar:
while True:
rambar.n=psutil.virtual_memory().percent
cpubar.n=psutil.cpu_percent()
rambar.refresh()
cpubar.refresh()
sleep(0.5)
使用多处理库将这些进度条放在单独的进程中是很方便的。
此代码片段也可作为要点。
关于CPU的详细信息,请使用psutil库
https://psutil.readthedocs.io/en/latest/#cpu
对于RAM频率(以MHz为单位),使用内置的Linux库dmidecode并操作输出位;)。此命令需要root权限,因此也需要提供您的密码。只需复制以下推荐替换mypass与您的密码
进口操作系统
操作系统。system("echo mpass | sudo -S dmidecode -t memory | grep 'Clock Speed' | cut -d ':' -f2")
------------------- 输出 ---------------------------
1600吨/秒
未知的
1600吨/秒
未知的0
更具体的
[i在os中的i。]popen("echo mpass | sudo -S dmidecode -t memory | grep 'Clock Speed' | cut -d ':' -f2").read()。if i.isdigit()]
-------------------------- 输出 -------------------------
[' 1600 ', ' 1600 ']