# -*- coding: utf-8 -*-
"""
--------------------------------
Time : 2024/3/21 11:50
Author : Ning
Description :
xitong_jiankong.py
系统内存、cpu使用情况检测
--------------------------------
"""
from loguru import logger
import requests, time, os, sys, re, json
import psutil
class xitong_jiankongs():
def __init__(self):
pass
def __del__(self):
pass
# 内存
def neicun(self):
"""
以适于人类可读方式显示内存信息。-h与其他命令最大不同是-h选项会在数字后面加上适于人类可读的单位
free -h
"""
mem = psutil.virtual_memory()
# 系统总计内存(单位字节)
zj = round(float(mem.total) / 1024 / 1024 / 1024, 2)
# 系统已经使用内存(单位字节)
ysy = round(float(mem.used) / 1024 / 1024 / 1024, 2)
# 系统空闲内存(单位字节)
kx = round(float(mem.free) / 1024 / 1024 / 1024, 2)
keyong = round(float(mem.available) / 1024 / 1024 / 1024, 2) # 可用内存
logger.info(f"可用内存:{keyong}")
# 已使用百分比
yishiyong = mem.percent
logger.info(f"内存大小为:{zj}GB,已使用:{ysy}GB,可用:{kx}GB,已使用:{yishiyong}%")
# CPU
def cpu(self):
"""
# 查看物理CPU个数
cat /proc/cpuinfo| grep "physical id"| sort| uniq| wc -l
# 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep "cpu cores"| uniq
# 查看逻辑CPU的个数
cat /proc/cpuinfo| grep "processor"| wc -l
"""
# 使用psutil.cpu_count()获取CPU的逻辑处理器个数
# psutil.cpu_count(logical=False)获取CPU的物理个数(内核个数)
cpu_count = psutil.cpu_count() # 获取CPU 的逻辑个数,默认logical=True
logical = psutil.cpu_count(logical=False) # 获取CPU 的物理个数
shiyonglv = psutil.cpu_percent(interval=1) #CPU使用率
logger.info(f"CPU配置为:{logical}核,{cpu_count}处理器,使用率:{shiyonglv}%")
return
cpu_time = psutil.cpu_times()
logger.debug(cpu_time)
logger.info(psutil.cpu_times_percent())
logger.info(psutil.cpu_stats())
logger.info(psutil.cpu_freq())
logger.info(psutil.getloadavg())
p = psutil.cpu_times(percpu=True) # 使用cpu_times 方法获取CPU完整信息,需要显示所有逻辑CPU信息,percpu = True可选
s = psutil.cpu_times().user # 获取单项数据信息,如用户user 的CPU 时间比
logger.debug(p)
logger.debug(s)
# cpu_percent 以百分比表示当前系统范围内的CPU使用率
# 当interval> 0.0时比较间隔前后的系统CPU时间(此时将会处于阻塞)
# 当interval为0.0或None,比较自上次调用或模块导入以来经过的系统CPU时间(不阻塞)
# 这意味着第一次调用它会返回一个无意义的0.0值,您应该忽略该值 。
logger.info(psutil.cpu_percent())
logger.info(psutil.cpu_percent(interval=1))
logger.info(psutil.cpu_percent(interval=None))
# 当percpu为True时,返回一个浮点列表,以每个CPU的百分比表示利用率。
# 列表的第一个元素是指第一个CPU,第二个元素是指第二个CPU,依此类推。列表的顺序在各个呼叫之间是一致的。
logger.info(psutil.cpu_percent(interval=1, percpu=True))
# 将会以百分比的形式返回当前系统范围的CPU的利用率。
logger.info(psutil.cpu_percent(interval=None, percpu=False))
def main(self):
self.neicun()
self.cpu()
xitong_jiankong = xitong_jiankongs()
if __name__ == "__main__":
xitong_jiankong.main()
logger.debug("========程序运行结束========")
标签:info,1024,CPU,psutil,内存,监控,logger,cpu
From: https://www.cnblogs.com/ningningqi/p/18087747