# _*_ coding: utf-8 _*_ # @Time :2022/5/29 14:54 # @Email :508737091@qq.com # @Author :qiangyanwen # @File :mem.py.py import os import psutil import datetime import time def get_sys_info(): """ 获取系统信息 """ # 当前时间 now_time = time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time())) # print("当前时间:", now_time) # 获取系统启动时间 system_start_info = "系统启动时间: %s" % datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H:%M:%S") # 获取系统用户 users_count = len(psutil.users()) users_list = ",".join([u.name for u in psutil.users()]) users_info = "当前有%s个用户,分别是 %s" % (users_count, users_list) sys_info = {"now_time": now_time, "system_start_time": system_start_info, "users_info": users_info} return sys_info def get_cpu_info(): """ 获取cpu信息 """ # 查看cpu物理个数的信息 # print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False)) cpu_count = psutil.cpu_count(logical=False) # cpu的使用率 cpu = (str(psutil.cpu_percent(1))) + '%' cp = "cup使用率: %s" % cpu cpu_info={"cpu_count":cpu_count,"cpu_usage":cpu} return cpu_info def bytes2human(n): """ 内存单位转换 :param n: :return: """ symbols = ('K', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y') prefix = {} for i, s in enumerate(symbols): prefix[s] = 1 << (i + 1) * 10 for s in reversed(symbols): if n >= prefix[s]: value = float(n) / prefix[s] return '%.1f%s' % (value, s) return '%sB' % n def ge_mem_info(): """ 获取内存信息 """ virtual_memory = psutil.virtual_memory() virtual_memory_count = bytes2human(virtual_memory.total) used_memory = bytes2human(virtual_memory.used) free_memory = bytes2human(virtual_memory.free) aval_memory = bytes2human(virtual_memory.available) memory_percent = virtual_memory.percent # memory_info = "总共内存:%s, 可用内存:%s, 内存使用:%s,使用率%0.1f%%,剩余内存:%s" % ( # virtual_memory_count, aval_memory, used_memory, memory_percent, free_memory) mem_info={ "total_memory": virtual_memory_count, "aval_memory":aval_memory, "memory_usage":used_memory, "memory_percent":memory_percent, "free_memory":free_memory } return mem_info def get_disk_info(): """ 获取磁盘信息 """ F_BSIZE = 0 F_BLOCKS = 2 F_BAVAIL = 4 # 循环磁盘分区 disks = [] for disk in psutil.disk_partitions(): # 读写方式 光盘 or 有效磁盘类型 if 'cdrom' in disk.opts or disk.fstype == '': continue disk_name_arr = disk.device.split(':') disk_name = disk_name_arr[0] disk_mount = disk.mountpoint vfs = os.statvfs(disk_mount) total_disk = vfs[F_BLOCKS] * vfs[F_BSIZE] free_disk = vfs[F_BAVAIL] * vfs[F_BSIZE] used_disk = total_disk - free_disk used_per = round((float(used_disk) / total_disk) * 100, 4) # 当前磁盘使用率和剩余空间G信息 # disk_info = "%s盘使用率:%s%%, 剩余空间:%iGB" % (disk_name, str(used_per), free_disk//1024//1024//1024) disk_info ={"path":disk_name,"usage":str(used_per),"space":free_disk//1024//1024//1024//1024} disks.append(disk_info) return disks def get_net_info(): """ 获取网络信息 """ net = psutil.net_io_counters() bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024) bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024) print("网卡接收数据 %s 网卡发送数据 %s" % (bytes_rcvd, bytes_sent)) if __name__ == '__main__': now_time,users_info,system_start_info = get_sys_info() print(now_time,users_info,system_start_info) get_cpu_info() ge_mem_info() disk = get_disk_info() print(disk) get_net_info()