zoukankan      html  css  js  c++  java
  • python模块------psutil

    模块简介

    psutil是一个跨平台库能够轻松实现获取系统运行的进程和系统利用率(包括CPU、内存、磁盘、网络等)信息。

    它主要用来做系统监控,性能分析,进程管理。它实现了同等命令行工具提供的功能,如ps、top、lsof、netstat、ifconfig、who、df、kill、free、nice、ionice、iostat、iotop、uptime、pidof、tty、taskset、pmap等。

    目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统.

    cpu相关

    import psutil
    a = psutil.cpu_count() #逻辑CPU个数
    b = psutil.cpu_count(logical=False) #物理CPU个数
    c = psutil.cpu_percent(3) #最近3秒钟cpu平均使用
    d = '%.2f%%' % c          #变成百分比,只保留两位小数
    print(a)
    print(b)
    print(c)
    print(d) 

    MEM相关

    内存信息的获取主要使用virtual_memory方法。swap使用就用swap_memory方法。

    import psutil
    mem = psutil.virtual_memory()
    mem_per = '%.2f%%' % mem[2]
    mem_total = str(int(mem[0] / 1024 / 1024)) + 'M'
    mem_used = str(int(mem[3] / 1024 / 1024)) + 'M'
    print(mem_per)
    print(mem_total)
    print(mem_used)

    磁盘相关

    磁盘利用率使用psutil.disk_usage方法获取

    import psutil
    c_info = psutil.disk_usage("C:")
    c_per = '%.2f%%' % c_info[3]  #磁盘的使用率
    print(c_info)
    print(c_per)
    

    网络带宽相关

    import psutil
    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(u"网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent))

    实例

    #!/usr/bin/env python
    #coding:utf-8
    
    import psutil
    import datetime
    import time
    
    # 当前时间
    now_time = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    print(now_time)
    
    #查看cpu物理个数的信息
    print(u"物理CPU个数: %s" % psutil.cpu_count(logical=False))
    
    #CPU的使用率
    cpu = (str(psutil.cpu_percent(1))) + '%'
    print(u"cup使用率: %s" % cpu)
    
    #查看内存信息,剩余内存.free  总共.total
    #round()函数方法为返回浮点数x的四舍五入值。
    free = str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), 2))
    total = str(round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), 2))
    memory = int(psutil.virtual_memory().total - psutil.virtual_memory().free) / float(psutil.virtual_memory().total)
    print(u"物理内存: %s G" % total)
    print(u"剩余物理内存: %s G" % free)
    print(u"物理内存使用率: %s %%" % int(memory * 100))
    
    # 系统启动时间
    print(u"系统启动时间: %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()])
    print(u"当前有%s个用户,分别是 %s" % (users_count, users_list))
    
    #网卡,可以得到网卡属性,连接数,当前流量等信息
    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(u"网卡接收流量 %s 网卡发送流量 %s" % (bytes_rcvd, bytes_sent))
    
    print('-----------------------------磁盘信息---------------------------------------')
    io = psutil.disk_partitions()
    print("系统磁盘信息:" + str(io))
    for i in io:
        o = psutil.disk_usage(i.device)
        print("总容量:" + str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G")
        print("已用容量:" + str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G")
        print("可用容量:" + str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G")
    
    print('-----------------------------进程信息-------------------------------------')
    # 查看系统全部进程
    for pnum in psutil.pids():
        p = psutil.Process(pnum)
        print(u"进程名 %-20s  内存利用率 %-18s 进程状态 %-10s 创建时间 %-10s " 
         % (p.name(), p.memory_percent(), p.status(), p.create_time()))




  • 相关阅读:
    深拷贝(deep clone)与浅拷贝(shallow clone)
    wait和notify
    Java实现简单RPC框架(转)
    Eclipse 搭建Struts2
    手写HashMap实践
    JVM 类加载器ClassLoader源码学习笔记
    Java 内存模型学习笔记
    Struts2 入门笔记
    struts2 拦截器
    Btrace 拦截时机
  • 原文地址:https://www.cnblogs.com/jinyuanliu/p/10478247.html
Copyright © 2011-2022 走看看