zoukankan      html  css  js  c++  java
  • tornado硬件管理系统-硬件信息的获取(3)

    字段分析:

     

     monitor.py

    #-*- coding: utf-8 -*-
    import psutil
    import time,datetime
    from pprint import pprint
    
    #定义一个专门用于获取系统信息的类
    class Moniter(object):
        #转换方法
        def byte_to_gb(self,data,key=""):
            if key=="percent":
                return data
            else:
                return round(data/(1024**3),2)
        def cpu(self):
            data = dict(
                percent_avg=psutil.cpu_percent(interval=0, percpu=False),
                percent_per = psutil.cpu_percent(interval=0, percpu=True),
                num_p = psutil.cpu_count(logical=False),
                num_l = psutil.cpu_count(logical=True),
            )
            return data
        def men(self):
            info = psutil.virtual_memory()
            data = dict(
                total = self.byte_to_gb(info.total),
                used = self.byte_to_gb(info.used),
                free = self.byte_to_gb(info.free),
                percent = self.byte_to_gb(info.percent),
            )
            return data
        def swap(self):
            info = psutil.swap_memory()
            data = dict(
                total = self.byte_to_gb(info.total),
                used = self.byte_to_gb(info.used),
                free = self.byte_to_gb(info.free),
                percent = self.byte_to_gb(info.percent)
            )
            return data
    
        #获取磁盘信息
        def disk(self):
            info = psutil.disk_partitions()
            data =[
                dict(
                    device = v.device,
                    mountpoint = v.mountpoint,
                    fstype = v.fstype,
                    opts = v.opts,
                    used = {
                        k: self.byte_to_gb(v,k)
                        for k,v in psutil.disk_usage(v.mountpoint)._asdict().items()
                    }
                )
                for v in info
            ]
            return data
        #获取网络信息
        def net(self):
            addrs = psutil.net_if_addrs()
            addrs_info = {
                k:[
                    dict(
                        family = val.family.name,
                        address = val.address,
                        netmask = val.netmask,
                        broadcast = val.broadcast,
                    )
                    for val in v if val.family.name == "AF_INET"
                ][0]
                for k,v in addrs.items()
            }
            #收集io的输入输出信息
            io = psutil.net_io_counters(pernic=True)
            data = [
                dict(
                    name = k,
                    bytes_sent = v.bytes_sent,
                    bytes_recv = v.bytes_recv,
                    packets_sent = v.packets_sent,
                    packets_recv = v.packets_recv,
                    **addrs_info[k],
                )
                for k,v in io.items()
            ]
            return data
    
        #时间戳转换
        def td(self,tm):
            dt = datetime.datetime.fromtimestamp(tm)
            return dt.strftime("%Y-%m-%d %H:%M:%S")
        #获取开机时间
        def lastest_start_time(self):
            return self.td(psutil.boot_time())
        #登录用户
        def logined_user(self):
            users = psutil.users()
            data =[
                dict(
                    name=v.name,
                    terminal=v.terminal,
                    host=v.host,
                    started=self.td(v.started),
                    pid=v.pid
                )
                for v in users
            ]
            return data
    
    if __name__ == "__main__":
        m = Moniter()
        pprint(m.logined_user())
        # for i in range(10):
        #     print(m.cpu())
        #     time.sleep(1)
  • 相关阅读:
    服务器端渲染和客户端渲染
    混沌开窍---24幅由算法生成的正方形图像
    三生万物---算法生成的25幅三角形图像
    九尾之火---算法生成的动画图像
    最简单的分形图像生成算法
    正与邪---25幅由算法生成的五角星图像
    一幅画<十六芒星盾>---程序员or艺术家
    火火火---12幅算法生成火的图像
    恶魔的指纹---49幅由算法生成的七芒星图像
    混沌分形之电子云
  • 原文地址:https://www.cnblogs.com/topass123/p/13099652.html
Copyright © 2011-2022 走看看