您当前的位置:首页 > 计算机 > 编程开发 > Python

python 获取系统资源使用信息

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

一、内存、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%
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门