2025年4月21日 星期一 乙巳(蛇)年 正月廿二 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > Python

python 获取系统资源使用信息

时间:04-01来源:作者:点击数:29

一、内存、CPU、硬盘、登录用户、进程等的一些基本信息:

  • import psutil
  • import time
  • import datetime
  • """
  • 获取系统基本信息
  • """
  • EXPAND = 1024 * 1024
  • def mems():
  • ''' 获取系统内存使用情况 '''
  • mem = psutil.virtual_memory()
  • mem_str = " 内存状态如下:\n"
  • mem_str += " 系统的内存容量为: " + str(mem.total / EXPAND) + " MB\n"
  • mem_str += " 系统的内存已使用容量为: " + str(mem.used / EXPAND) + " MB\n"
  • mem_str += " 系统可用的内存容量为: " + str(mem.total / EXPAND - mem.used / (1024 * 1024)) + " MB\n"
  • # mem_str += " 内存的buffer容量为: " + str(mem.buffers / EXPAND) + " MB\n"
  • # mem_str += " 内存的cache容量为:" + str(mem.cached / EXPAND) + " MB\n"
  • return mem_str
  • def cpus():
  • ''' 获取cpu的相关信息 '''
  • cpu_str = " CPU状态如下:\n"
  • cpu_status = psutil.cpu_times()
  • cpu_str += " user = " + str(cpu_status.user) + "\n"
  • # cpu_str += " nice = " + str(cpu_status.nice) + "\n"
  • cpu_str += " system = " + str(cpu_status.system) + "\n"
  • cpu_str += " idle = " + str(cpu_status.idle) + "\n"
  • # cpu_str += " iowait = " + str(cpu_status.iowait) + "\n"
  • # cpu_str += " irq = " + str(cpu_status.irq) + "\n"
  • # cpu_str += " softirq = " + str(cpu_status.softirq) + "\n"
  • # cpu_str += " steal = " + str(cpu_status.steal) + "\n"
  • # cpu_str += " guest = " + str(cpu_status.guest) + "\n"
  • return cpu_str
  • def disks():
  • ''' 查看硬盘基本信息 '''
  • ''' psutil.disk_partitions() 获取磁盘的完整信息
  • psutil.disk_usage('/') 获得分区的使用情况,这边以根分区为例
  • psutil.disk_io_counters() 获取磁盘总的io个数
  • perdisk 默认为False
  • psutil.disk_io_counters(perdisk=True) perdisk为True 返回单个分区的io个数
  • '''
  • disk_str = " 硬盘信息如下:\n"
  • disk_status = psutil.disk_partitions()
  • for item in disk_status:
  • disk_str += str(item) + "\n"
  • p = item.device
  • disk = psutil.disk_usage(p)
  • disk_str += p+"盘容量为: " + str(disk.total / EXPAND) + " MB\n"
  • disk_str += p+"盘已使用容量为: " + str(disk.used / EXPAND) + " MB\n"
  • disk_str += p+"盘可用的内存容量为: " + str(disk.free / EXPAND) + " MB\n"
  • return disk_str
  • def users():
  • ''' 查看当前登录的用户信息 '''
  • user_str = " 登录用户信息如下:\n "
  • user_status = psutil.users()
  • for item in user_status:
  • user_str += str(item) + "\n"
  • return user_str
  • def process():
  • ''' 查看进程信息 '''
  • pids = psutil.pids()
  • proces = []
  • for pid in pids:
  • p = psutil.Process(pid)
  • jctime = str(datetime.datetime.fromtimestamp(p.create_time()))[:19]
  • p_info = [
  • p.name(), # 进程的名字
  • #p.exe(), # 进程bin文件位置
  • #p.cwd(), # 进程的工作目录的绝对路径
  • p.status(), # 进程的状态
  • jctime, # 进程的创建时间
  • #p.uids(), # 进程的uid信息
  • #p.gids(), # 进程的gid信息
  • p.cpu_times(), # cup时间信息
  • p.memory_info(),# 进程内存的利用率
  • p.io_counters() # 进程的io读写信息
  • ]
  • proces.append(p_info)
  • return proces
  • if __name__ == '__main__':
  • print(mems()) # 内存
  • print(cpus()) # CPU
  • print(disks()) # 硬盘
  • print(users()) # 登录用户
  • proces = process()
  • print(proces[0])

执行结果如下:

二、获取网络、网卡的信息:

  • import socket
  • import uuid
  • def mac_name_ip():
  • ''' 获得Mac地址、计算机名、IP地址 '''
  • mac = uuid.UUID(int = uuid.getnode()).hex[-12:] # Mac地址
  • name = socket.getfqdn(socket.gethostname()) # 计算机名称
  • addr = socket.gethostbyname(myname) # IP地址
  • return mac,name,addr
  • def net_all():
  • ''' 获取网络总的IO信息 '''
  • n = psutil.net_io_counters()
  • ns = [
  • n.bytes_sent, # 发送字节数
  • n.bytes_recv, # 接受字节数
  • n.packets_sent, # 发送数据包数
  • n.packets_recv, # 接收数据包数
  • ]
  • return ns
  • def net_line():
  • ''' 获取每个网络接口的IO信息 '''
  • n = psutil.net_io_counters(pernic=True)
  • ns = {}
  • for i in n:
  • ns[i] = [
  • n[i].bytes_sent, # 发送字节数
  • n[i].bytes_recv, # 接受字节数
  • n[i].packets_sent, # 发送数据包数
  • n[i].packets_recv, # 接收数据包数
  • ]
  • return ns
  • def net_card():
  • ''' 网卡信息
  • 返回:{网卡名:[IP地址64,IP地址32,Mac地址],...}
  • '''
  • n = psutil.net_if_addrs()
  • ns = {}
  • for i in n:
  • ns[i] = []
  • for j in n[i]:
  • ns[i].append(j.address)
  • return ns
  • def net_cart_status():
  • ''' 网卡状态 '''
  • n = psutil.net_if_stats()
  • return n
  • def network_connect():
  • ''' 网路连接信息 '''
  • n = psutil.net_connections()
  • return n

三、系统内存与CUP使用率:

  • def system_rate():
  • ''' 内存与CPU使用率 '''
  • #获取当前运行的pid
  • p1=psutil.Process(os.getpid())
  • #本机内存的占用率
  • print ('内存占用率: '+str(psutil.virtual_memory().percent)+'%')
  • #本机cpu的总占用率
  • print ('CPU占用率: '+str(psutil.cpu_percent(0))+'%')
  • #该进程所占cpu的使用率
  • print ("该进程CPU占用率: "+str(p1.cpu_percent(None))+"%")
  • #该进程所占内存占用率
  • print ("该进程内存占用率: "+str(p1.memory_percent())+"%")
  • 执行结果:
  • 内存占用率: 76.5%
  • CPU占用率: 17.9%
  • 该进程CPU占用率: 0.0%
  • 该进程内存占用率: 0.7558951606277217%
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门