zoukankan      html  css  js  c++  java
  • 获取硬件以及系统信息_自动化运维_psutil模块

    # 跨平台库系统信息获取(支持linux、MAC、Windwos、FreeBSD等多种系统)
    
    # 安装
    # pip install psutil
    
    import psutil
    
    # 转换函数 数值转识别
    def bytes2human(n):
         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
    print(bytes2human(psutil.virtual_memory().total))
    print(psutil.disk_partitions())
    print(bytes2human(psutil.disk_usage(r'C:\').total))
    
    ''''
    获取cpu信息
    '''
    a = psutil.cpu_times() #使用cpu_times方法获取cpu完成信息,需要显示所有的cpu信息
    b = psutil.cpu_times().user #获取单项cpu的数据信息,如用户user的cpu时间比
    c = psutil.cpu_count() #获取cpu的逻辑个数
    
    print (a)
    print (b)
    print (c)
    
    '''
    内存信息
    '''
    mem = psutil.virtual_memory()   #使用pstuil.virtual_memory方法获取内存的完整信息
    mem_total = psutil.virtual_memory().total #获取内存总数
    mem_free = psutil.virtual_memory().free  #获取内存剩余
    print (mem)
    print (mem_total)
    print (mem_free)
    
    
    '''
    磁盘信息
    '''
    disk_partitions = psutil.disk_partitions()   #获取磁盘完整信息
    disk_usage = psutil.disk_usage('/')   #获取整个硬盘的信息
    disk_usage_c = psutil.disk_usage('C://') #获取分区c的硬盘信息
    disk_io = psutil.disk_io_counters() #获取硬盘的总io个数、读写信息
    disk_io_perdisk = psutil.disk_io_counters(perdisk=True) #‘perdisk=True’参数获取单个分区IO个数、读写信息
    print (disk_partitions)
    print (disk_usage)
    print (disk_usage_c)
    print ('硬盘总io=' +str(disk_io))
    print ('单个分区信息='+str(disk_io_perdisk))
    
    '''
    网络信息
    '''
    net_io = psutil.net_io_counters()   #获取网络总IO信息、默认pernic=False
    net_io_pernic = psutil.net_io_counters(pernic=True) #获取每个网卡的io信息
    net_connections = psutil.net_connections()#获取所有的连接信息
    print (net_io)
    print (net_io_pernic)
    print (net_connections)
    
    '''
    其他系统信息
    '''
    users = psutil.users()      #当前登录系统的用户信息
    import datetime
    boot_time = psutil.boot_time() #获取开机时间,为linux格式
    boot_time_nu = datetime.datetime.fromtimestamp(psutil.boot_time()).strftime('%Y-%m-%d%H:%M:%S') #转换为自然格式
    print (users)
    print (boot_time)
    print (boot_time_nu)
    
    '''
    进程信息
    '''
    pids = psutil.pids() #列出所有进程id
    pids_4644= psutil.Process(4644) #列出指定pid为4644的进程信息
    print (pids)
    print (pids_4644.name())    #输出进程名
    print (pids_4644.exe())     #输出进程路径
    print (pids_4644.cwd())     #输出绝对路径
    print (pids_4644.status())  #输出进程状态
    print (pids_4644.create_time()) #输出创建时间、时间戳格式
    #print (pids_4644.gid())        #输出进程gid信息
    print (pids_4644.cpu_times)     #输出cpu时间信息,包括user,system两个cpu时间
    print (pids_4644.cpu_affinity()) #get进程cpu亲和度
    print (pids_4644.memory_percent()) #进程利用率
    print (pids_4644.memory_info)    #进程内存信息
    print (pids_4644.io_counters())  #进程io信息,包括读写IO数及字节数
    print (pids_4644.connections())      #返回打开进程sockert的namedutples列表、包括fs,family等信息
    print (pids_4644.num_threads())     #进程开启的线程数
    
    '''
    popen类的使用
    '''
    import psutil
    from subprocess import PIPE   #通过psutil的popen方法启动的应用程序,可以跟踪该程序的所有相关信息
    
    # p = psutil.Popen(['python','-c','print("hello")'],stdout=PIPE)
    # print(
    # p.name(),
    # p.username(),
    # p.cpu_times()
    # )
    
    p = psutil.Popen(['python ','./cc05.py'],stdout=PIPE)
    print(p)
    print(p.communicate())
  • 相关阅读:
    python 并发编程 多线程 event
    python 并发编程 多线程 定时器
    python 并发编程 多线程 信号量
    linux top 查看CPU命令
    python 并发编程 多线程 GIL与多线程
    python 并发编程 多线程 死锁现象与递归锁
    python 并发编程 多线程 GIL与Lock
    python GIL全局解释器锁与互斥锁 目录
    python 并发编程 多线程 GIL全局解释器锁基本概念
    执行python程序 出现三部曲
  • 原文地址:https://www.cnblogs.com/Anec/p/14141787.html
Copyright © 2011-2022 走看看