博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python获取本机资源使用信息
阅读量:7096 次
发布时间:2019-06-28

本文共 5230 字,大约阅读时间需要 17 分钟。

hot3.png

__author__ = 'root'# -*- encoding: utf-8 -*-# machine_status.py  获取本机资源使用信息、进程状态和连接情况# May 2014import datetimeimport jsonimport osimport psutil as ps                       # psutil库 需预先安装#from pymongo import Connectionimport timeimport socketimport uuidclass MachineStatus(object):    #   初始化    def __init__(self):        self.MAC = None        self.IP = None        self.cpu = {}        self.mem = {}        self.process = {}        self.network = {}        self.status = []                    #  [cpu使用率, 内存使用率, 进程数目, established连接数]        self.get_init_info()        self.get_status_info()    #  宿主机存库状态    def run(self):        self.get_status_info()        self.save_status_to_db()    def save_status_to_db(self):        print self.status    #  数据收集    def get_init_info(self):        self.cpu = {'cores' : 0,            #  cpu逻辑核数                    'percent' : 0,          #  cpu使用率                    'system_time' : 0,      #  内核态系统时间                    'user_time' : 0,        #  用户态时间                    'idle_time' : 0,        #  空闲时间                    'nice_time' : 0,        #  nice时间 (花费在调整进程优先级上的时间)                    'softirq' : 0,          #  软件中断时间                    'irq' : 0,              #  中断时间                    'iowait' : 0}           #  IO等待时间        self.mem = {'percent' : 0,                    'total' : 0,                    'vailable' : 0,                    'used' : 0,                    'free' : 0,                    'active' : 0}        self.process = {'count' : 0,        #  进程数目                        'pids' : 0}         #  进程识别号        self.network = {'count' : 0,        #  连接总数                        'established' : 0}  #  established连接数        self.status = [0, 0, 0, 0]          #  cpu使用率,内存使用率, 进程数, established连接数        self.get_mac_address()        self.get_ip_address()    #  获取状态列表    def get_status_info(self):        self.get_cpu_info()        self.get_mem_info()        self.get_process_info()        self.get_network_info()        self.status[0] = self.cpu['percent']        self.status[1] = self.mem['percent']        self.status[2] = self.process['count']        self.status[3] = self.network['established']    #  获取mac    def get_mac_address(self):        mac = uuid.UUID(int=uuid.getnode()).hex[-12:]        self.MAC = ":".join([mac[e : e+2] for e in range(0, 11, 2)])    #  获取ip    def get_ip_address(self):        tempSock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)        tempSock.connect(('8.8.8.8', 80))        addr = tempSock.getsockname()[0]        tempSock.close()        self.IP = addr    #  获得cpu信息    def get_cpu_info(self):        self.cpu['cores'] = ps.cpu_count()        self.cpu['percent'] = ps.cpu_percent(interval=2)        cpu_times = ps.cpu_times()        self.cpu['system_time'] = cpu_times.system        self.cpu['user_time'] = cpu_times.user        self.cpu['idle_time'] = cpu_times.idle        self.cpu['nice_time'] = cpu_times.nice        self.cpu['softirq'] = cpu_times.softirq        self.cpu['irq'] = cpu_times.irq        self.cpu['iowait'] = cpu_times.iowait    #  获得memory信息    def get_mem_info(self):        mem_info = ps.virtual_memory()        self.mem['percent'] = mem_info.percent        self.mem['total'] = mem_info.total        self.mem['vailable'] = mem_info.available        self.mem['used'] = mem_info.used        self.mem['free'] = mem_info.free        self.mem['active'] = mem_info.active    #  获取进程信息    def get_process_info(self):       pids = ps.pids()       self.process['pids'] = pids       self.process['count'] = len(pids)    #  获取网络数据    def get_network_info(self):        conns = ps.net_connections()        self.network['count'] = len(conns)        count = 0        for conn in conns:           if conn.status is 'ESTABLISHED':               count = count + 1        self.network['established'] = countclass HostInfoManage(object):    @staticmethod    def get_host_cpu_info():        MS = MachineStatus()        cpu_info = MS.cpu        return {"percent": cpu_info.get("percent", 0)}    @staticmethod    def get_host_memory_info():        MS = MachineStatus()        mem_info = MS.mem        return {"percent": mem_info.get("percent", 0)}    @staticmethod    def get_host_ip_info():        MS = MachineStatus()        return {"ip": MS.IP}    @staticmethod    def get_host_mac_info():        MS = MachineStatus()        return {"ip": MS.MAC}    @staticmethod    def get_disk_used_info():        return {"percent": HostInfoManage.disk_stat() * 100}    @staticmethod    def disk_stat():        import os        hd={}        disk = os.statvfs("/")        hd['available'] = disk.f_bsize * disk.f_bavail        hd['capacity'] = disk.f_bsize * disk.f_blocks        hd['used'] = disk.f_bsize * disk.f_bfree        return float(hd['used']) / float(hd['capacity'])if __name__ == '__main__':    MS = MachineStatus()    print MS.IP, '\n', MS.MAC, '\n', MS.cpu, '\n', MS.mem, '\n', MS.status#获取硬盘使用情况def disk_stat():    import os    hd={}    disk = os.statvfs("/")    hd['available'] = disk.f_bsize * disk.f_bavail    hd['capacity'] = disk.f_bsize * disk.f_blocks    hd['used'] = disk.f_bsize * disk.f_bfree    print float(hd['used']) / float(hd['capacity'])    return hd

 

转载于:https://my.oschina.net/zfschool/blog/784575

你可能感兴趣的文章
mj使用
查看>>
性能优化之布局优化
查看>>
Qt之QLCDNumber
查看>>
JavaScript之Window对象
查看>>
jQuery Tools Scrollable使用的限制
查看>>
正则表达式大全
查看>>
PostgreSQL 长事务中DML产生的数据无法被及时纳入统计信息导致的问题
查看>>
btrfs 使用指南 - 1 概念,创建,块设备管理,性能优化
查看>>
PostgreSQL 另类advisory lock保证唯一约束法
查看>>
机房重构之存储过程
查看>>
Android使用HttpClient实现文件上传到PHP服务器,并监控进度条
查看>>
Java的特点
查看>>
Apache的htaccess文件出现500错误的原因
查看>>
iOS图片压缩处理
查看>>
Codeforces Round #333 (Div. 2) A. Two Bases
查看>>
【hibernate框架】用Annotation注解表示id生成策略
查看>>
TypeScript 在 React 中使用总结
查看>>
如何将Excel转换成Markdown表格
查看>>
高仿QQ 发送图片高亮HaloProgressView
查看>>
netty入门
查看>>