python数据可视化开发(3):使用psutil和socket模块获取电脑系统信息(Mac地址、IP地址、主机名、系统用户、硬盘、CPU、内存、网络)

简介: python数据可视化开发(3):使用psutil和socket模块获取电脑系统信息(Mac地址、IP地址、主机名、系统用户、硬盘、CPU、内存、网络)

系列文章目录

python开发低代码数据可视化大屏:pandas.read_excel读取表格

python实现直接读取excle数据实现的百度地图标注

python数据可视化开发(1):Matplotlib库基础知识

python数据可视化开发(2):pandas读取Excel的数据格式处理


文章目录

系列文章目录

@[TOC](文章目录)

前言

1.psutil模块说明

Memory内存相关

CPU相关

Disk相关

Network相关

进程管理

2.封装函数

数据格式化

调用函数

JSON输出数据

总结


d44aaa0ecd09434ba3c04c53e8b83876.jpg


前言

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内存相关


image.png


CPU相关


image.png


Disk相关


image.png


Network相关


image.png


进程管理


image.png


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模块)

@漏刻有时


相关文章
|
21天前
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
36 6
|
23天前
|
传感器 人工智能 物联网
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发
C 语言在计算机科学中尤其在硬件交互方面占据重要地位。本文探讨了 C 语言与硬件交互的主要方法,包括直接访问硬件寄存器、中断处理、I/O 端口操作、内存映射 I/O 和设备驱动程序开发,以及面临的挑战和未来趋势,旨在帮助读者深入了解并掌握这些关键技术。
40 6
|
26天前
|
网络协议 安全 文件存储
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问
动态DNS(DDNS)技术在当前网络环境中日益重要,它允许使用动态IP地址的设备通过固定域名访问,即使IP地址变化,也能通过DDNS服务保持连接。适用于家庭网络远程访问设备及企业临时或移动设备管理,提供便捷性和灵活性。示例代码展示了如何使用Python实现基本的DDNS更新。尽管存在服务可靠性和安全性挑战,DDNS仍极大提升了网络资源的利用效率。
47 6
|
1月前
|
网络协议 网络安全 网络虚拟化
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算
本文介绍了十个重要的网络技术术语,包括IP地址、子网掩码、域名系统(DNS)、防火墙、虚拟专用网络(VPN)、路由器、交换机、超文本传输协议(HTTP)、传输控制协议/网际协议(TCP/IP)和云计算。通过这些术语的详细解释,帮助读者更好地理解和应用网络技术,应对数字化时代的挑战和机遇。
87 3
|
1月前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
83 2
|
1月前
|
网络协议 Linux
使用nmcli命令设置IP地址并排查网络故障
nmcli 是一个功能强大的网络管理工具,通过它可以轻松配置IP地址、网关和DNS,同时也能快速排查网络故障。通过正确使用nmcli命令,可以确保网络配置的准确性和稳定性,提高系统管理的效率。希望本文提供的详细步骤和示例能够帮助您更好地掌握nmcli的使用方法,并有效解决实际工作中的网络问题。
60 2
|
2月前
|
消息中间件 监控 网络协议
Python中的Socket魔法:如何利用socket模块构建强大的网络通信
本文介绍了Python的`socket`模块,讲解了其基本概念、语法和使用方法。通过简单的TCP服务器和客户端示例,展示了如何创建、绑定、监听、接受连接及发送/接收数据。进一步探讨了多用户聊天室的实现,并介绍了非阻塞IO和多路复用技术以提高并发处理能力。最后,讨论了`socket`模块在现代网络编程中的应用及其与其他通信方式的关系。
239 3
|
2月前
|
C++
析构造函数就是为了释放内存,就是在局部指针消失前释放内存,拷贝构造函数就是以构造函数为模块,在堆里面新开一块,同一个变量在堆里面的地址
本文讨论了C++中构造函数和析构函数的作用,特别是它们在管理动态内存分配和释放中的重要性,以及如何正确地实现拷贝构造函数以避免内存泄漏。
40 2
|
3月前
|
数据采集 Web App开发 开发工具
|
3月前
|
数据安全/隐私保护
下一篇
DataWorks