系列文章目录
python开发低代码数据可视化大屏:pandas.read_excel读取表格
python实现直接读取excle数据实现的百度地图标注
python数据可视化开发(1):Matplotlib库基础知识
python数据可视化开发(2):pandas读取Excel的数据格式处理
文章目录
系列文章目录
@[TOC](文章目录)
前言
1.psutil模块说明
Memory内存相关
CPU相关
Disk相关
Network相关
进程管理
2.封装函数
数据格式化
调用函数
JSON输出数据
总结
前言
psutil是一个开源切跨平台的库,其提供了便利的函数用来获取才做系统的信息,比如CPU,内存,磁盘,网络等。此外,psutil还可以用来进行进程管理,包括判断进程是否存在、获取进程列表、获取进程详细信息等。而且psutil还提供了许多命令行工具提供的功能,包括:ps,top,lsof,netstat,ifconfig, who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap。
1.psutil模块说明
psutil包含了异常、类、功能函数和常量,其中功能函数用来获取系统的信息,如CPU、磁盘、内存、网络等。类用来实现进程的管理功能。根据函数的功能,主要分为CPU、磁盘、内存、网络几类,下面将会总几个方面来介绍psutil提供的功能函数。
Memory内存相关
CPU相关
Disk相关
Network相关
进程管理
2.封装函数
import json import psutil import datetime import socket import uuid # 获取Mac地址 def get_mac_address(): mac = uuid.UUID(int=uuid.getnode()).hex[-12:] return ":".join([mac[e:e + 2] for e in range(0, 11, 2)]) # 磁盘 磁盘的使用量等等 def get_my_computer(): # 获取主机名 hostname = socket.gethostname() # 获取IP ip = socket.gethostbyname(hostname) # 系统用户 users_list = ",".join([u.name for u in psutil.users()]) # print(u"当前有%s个用户,分别是%s" % (users_count, users_list)) # 系统启动时间 start_time = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S") sys_info = {"hostname": hostname, "ip": ip, "mac": get_mac_address(), "user": users_list, "start_time": start_time} # 01.cpu信息 cpu1 = psutil.cpu_count() cpu2 = str(psutil.cpu_percent(interval=1)) + '%' # print(u"物理CPU个数 %s" % psutil.cpu_count(logical=False)) cpu = {"amount": cpu1, "rate": cpu2} # 02.内存信息 mem = psutil.virtual_memory() mem_total = round(mem.total / 1024 / 1024 / 1024, 2) mem_free = round(mem.free / 1024 / 1024 / 1024, 2) mem_percent = str(mem.percent) + '%' mem_used = round(mem.used / 1024 / 1024 / 1024, 2) ddr = {"total": mem_total, "free": mem_free, "rate": mem_percent, "used": mem_used} # 03.磁盘信息(磁盘空间使用占比) io = psutil.disk_partitions() disk = [] for i in io: # print(i.device) o = psutil.disk_usage(i.device) disk_data = {"disk_name": i.device, "total": round(o.total / (1024.0 * 1024.0 * 1024.0),1), "used": round(o.used / (1024.0 * 1024.0 * 1024.0),1), "surplus": round(o.free / (1024.0 * 1024.0 * 1024.0),1), "rate": psutil.disk_usage(i.device).percent} disk.append(disk_data) # 04.网卡,可以得到网卡属性,连接数,当前流量等信息 net_info = psutil.net_io_counters() bytes_sent = '{0:.2f}'.format(net_info.bytes_recv / 1024 / 1024) # mb bytes_rcvd = '{0:.2f}'.format(net_info.bytes_sent / 1024 / 1024) net = {"bytes_sent": bytes_sent, "bytes_rcvd": bytes_rcvd} # 数据字典 data = {"sys": sys_info, "cpu": cpu, "ddr": ddr, "disk": disk, "net": net} return data
数据格式化
调用函数
data = get_my_computer() re = json.dumps(data) print(data)
JSON输出数据
{'sys': {'hostname': 'poleung-len', 'ip': '192.168.4.16', 'mac': '4c:79:6e:4f:ff:0f', 'user': 'poleung', 'start_time': '2023-01-24 08:18:44'}, 'cpu': {'amount': 8, 'rate': '32.8%'}, 'ddr': {'total': 15.79, 'free': 4.19, 'rate': '73.5%', 'used': 11.6}, 'disk': [{'disk_name': 'C:\\', 'total': 200.0, 'used': 171.9, 'surplus': 28.1, 'rate': 86.0}, {'disk_name': 'D:\\', 'total': 129.2, 'used': 105.2, 'surplus': 24.0, 'rate': 81.4}, {'disk_name': 'E:\\', 'total': 146.5, 'used': 127.5, 'surplus': 18.9, 'rate': 87.1}], 'net': {'bytes_sent': '927.60', 'bytes_rcvd': '2336.88'}}
总结
对电脑系统信息的读取,涉及到psutil和socket模块。本文是将使用到的信息,封装成单独的函数,然后使用JSON输出,便于后期数据可视化大屏API的对接。后续开发工作的内容包括:
系统数据信息入库(pymysql模块)
数据图表化展示(matplotlib、pyecharts模块)
web端数据可视化(flask模块)
数据导出(pandas模块)
@漏刻有时