如何在Python中获取当前的 CPU 和 RAM 使用率?
先决条件:
- 实用工具
- 操作系统
CPU 使用率或利用率是指计算机处理某些信息所花费的时间。另一方面,RAM 使用率或主内存使用率是指某个系统在特定时间使用 RAM 的时间量。这两个都可以使用Python检索。
CPU使用率
方法一:使用psutil
函数psutil.cpu_percent() 以百分比的形式提供当前系统范围的 CPU 利用率。它需要一个参数,即时间间隔(秒)。由于 CPU 利用率是在一段时间内计算的,因此建议提供一个时间间隔。
句法:
cpu_percent(time_interval)
例子:
Python
# Importing the library
import psutil
# Calling psutil.cpu_precent() for 4 seconds
print('The CPU usage is: ', psutil.cpu_percent(4))
Python3
import os
import psutil
# Getting loadover15 minutes
load1, load5, load15 = psutil.getloadavg()
cpu_usage = (load15/os.cpu_count()) * 100
print("The CPU usage is : ", cpu_usage)
Python
# Importing the library
import psutil
# Getting % usage of virtual_memory ( 3rd field)
print('RAM memory % used:', psutil.virtual_memory()[2])
Python3
import os
# Getting all memory using os.popen()
total_memory, used_memory, free_memory = map(
int, os.popen('free -t -m').readlines()[-1].split()[1:])
# Memory usage
print("RAM memory % used:", round((used_memory/total_memory) * 100, 2))
输出:
The CPU usage is: 2.4
方法二:使用OS模块
psutil.getloadavg()以元组的形式提供 CPU 的负载信息。 psutil.getloadavg()在后台运行,结果每5 秒更新一次。 os.cpu_count()返回系统中的 CPU 数量。
例子:
蟒蛇3
import os
import psutil
# Getting loadover15 minutes
load1, load5, load15 = psutil.getloadavg()
cpu_usage = (load15/os.cpu_count()) * 100
print("The CPU usage is : ", cpu_usage)
输出:
The CPU usage is: 13.4
内存使用
方法一:使用psutil
函数psutil.virutal_memory()返回一个关于系统内存使用的命名元组。元组中的第三个字段表示内存(RAM)的使用百分比。它由(total – available)/total * 100 计算。
函数输出中的总字段为:
- total :不包括交换的总内存
- 可用:进程可用内存
- 百分比: 内存使用百分比
- used : 使用的内存
- free :内存未使用且随时可用
例子:
Python
# Importing the library
import psutil
# Getting % usage of virtual_memory ( 3rd field)
print('RAM memory % used:', psutil.virtual_memory()[2])
输出:
RAM memory % used: 76.9
方法二:使用OS模块
os 模块也可用于计算 CPU 中的 ram 使用率。以标志为输入的os.popen()方法可以提供总内存、可用内存和已用内存。此方法打开一个管道到或来自命令。可以根据模式是“r”还是“w”来读取或写入返回值。
句法:
os.popen(command[, mode[, bufsize]])
例子:
蟒蛇3
import os
# Getting all memory using os.popen()
total_memory, used_memory, free_memory = map(
int, os.popen('free -t -m').readlines()[-1].split()[1:])
# Memory usage
print("RAM memory % used:", round((used_memory/total_memory) * 100, 2))
输出:
RAM memory % used: 17.55
注意: os 模块方法仅适用于 Linux 系统,因为为 linux 系统指定了 free 标志和系统命令。