📜  如何在Python中获取当前的 CPU 和 RAM 使用率?

📅  最后修改于: 2022-05-13 01:55:30.773000             🧑  作者: Mango

如何在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 标志和系统命令。