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

@漏刻有时


相关文章
|
缓存 监控 Linux
CentOS系统如何查看当前内存容量。
以上方法都不需要特殊软件或者复杂配置即可执行,在CentOS或其他Linux发行版中都适合运行,并且它们各自透露出不同角度对待问题解答方式:从简单快速到深入详尽;从用户态到核心态;从操作层数到硬件层数;满足不同用户需求与偏好。
907 8
|
存储 缓存 监控
手动清除Ubuntu系统中的内存缓存的步骤
此外,只有系统管理员或具有适当权限的用户才能执行这些命令,因为这涉及到系统级的操作。普通用户尝试执行这些操作会因权限不足而失败。
2305 22
|
数据可视化 Linux iOS开发
Python测量CPU和内存使用率
这些示例帮助您了解如何在Python中测量CPU和内存使用率。根据需要,可以进一步完善这些示例,例如可视化结果或限制程序在特定范围内的资源占用。
562 22
|
监控 Linux Python
Linux系统资源管理:多角度查看内存使用情况。
要知道,透过内存管理的窗口,我们可以洞察到Linux系统运行的真实身姿,如同解剖学家透过微观镜,洞察生命的奥秘。记住,不要惧怕那些高深的命令和参数,他们只是你掌握系统"魔法棒"的钥匙,熟练掌握后,你就可以骄傲地说:Linux,我来了!
569 27
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
2023 8
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
4074 23
|
监控 Java Android开发
深入探索Android系统的内存管理机制
本文旨在全面解析Android系统的内存管理机制,包括其工作原理、常见问题及其解决方案。通过对Android内存模型的深入分析,本文将帮助开发者更好地理解内存分配、回收以及优化策略,从而提高应用性能和用户体验。
1336 38
|
监控 Java Android开发
深入探讨Android系统的内存管理机制
本文将深入分析Android系统的内存管理机制,包括其内存分配、回收策略以及常见的内存泄漏问题。通过对这些方面的详细讨论,读者可以更好地理解Android系统如何高效地管理内存资源,从而提高应用程序的性能和稳定性。
788 16
|
人工智能 安全 算法
IP地址、SSL与DeepSeek:现代网络安全的三角防线
在数字化浪潮中,IP地址、SSL协议与AI大模型DeepSeek分别作为网络通信的标识、加密护盾和智能防御核心,共同重塑网络安全范式。本文从技术原理、实践挑战与防御策略三个维度解析其融合价值与未来趋势。IP地址是设备的唯一标识,但易被攻击者利用;SSL通过加密确保数据安全;DeepSeek则通过AI实现智能威胁检测。三者的协同作用,为网络安全提供了全新的解决方案。未来将面临量子计算、AI对抗升级等挑战,需加速技术创新与安全意识提升,构建“协议可信+地址可控+AI赋能”的三维防线,以应对日益复杂的网络安全环境。
|
网络安全 Python
Python网络编程小示例:生成CIDR表示的IP地址范围
本文介绍了如何使用Python生成CIDR表示的IP地址范围,通过解析CIDR字符串,将其转换为二进制形式,应用子网掩码,最终生成该CIDR块内所有可用的IP地址列表。示例代码利用了Python的`ipaddress`模块,展示了从指定CIDR表达式中提取所有IP地址的过程。
917 6

热门文章

最新文章

推荐镜像

更多