系统监控模块psutil(第三方模块)

psutil是一个跨平台的库,用于在Python中检索系统运行的进程和系统利用率(CPU,内存,磁盘,网络,传感器)的信息。
它主要用于系统监控,性能分析,进程管理。分析和限制流程资源以及运行流程的管理。它实现了UNIX命令行工具提供的许多功能,例如:ps,top,lsof,netstat,ifconfig,who,df,kill,free,nice,ionice,iostat,iotop,uptime,pidof,tty,taskset,pmap等。
psutil目前支持32位和64位的Linux、Windows、OS X、FreeBSD和Sun Solaris等操作系统。Python版本从2.6到3.6。

获取CPU信息

import psutil

print psutil.cpu_times()                # 获取cpu的完整信息
print psutil.cpu_times().user # 获取单项cpu的数据信息,如用户user的cpu时间比
print psutil.cpu_times().iowait # 获取io等待时间 print psutil.cpu_count() # 获取cpu逻辑个数
print psutil.cpu_count(logical=False) # 获取cpu物理个数 print psutil.cpu_percent()
print psutil.cpu_percent(1) # 获取cpu的使用率

获取内存信息

import psutil

# 内存信息的获取主要使用virtual_memory方法。swap使用就用swap_memory方法。
mem = psutil.virtual_memory() #使用pstuil.virtual_memory方法获取内存的完整信息 print mem.total/1024/1024 # 获取内存总数
print mem.used/1024/1024 # 获取内存已经使用的
print mem.free/1024/1024 # 获取内存剩余

获取磁盘信息

import psutil

# 磁盘信息主要有两部分,一个是磁盘的利用率,一个是io,他们分别可以通过disk_usage和disk_io_counters方法获取。
print psutil.disk_partitions() # 获取磁盘完整信息
print psutil.disk_usage('/') # 获取整个硬盘的信息
print psutil.disk_usage('C://') # 获取分区c的硬盘信息
print psutil.disk_io_counters() # 获取硬盘的总io个数、读写信息
print psutil.disk_io_counters(perdisk=True) # 获取单个分区IO个数、读写信息

获取网络信息

import psutil

# 网络io和磁盘io使用方法差不多,主要使用net_io_counters方法,如果需要获取单个网卡的io信息,加上pernic=True参数。
print psutil.net_io_counters() # 获取网络总的IO信息、默认pernic=False
print psutil.net_io_counters(pernic=True) # 获取每个网卡的io信息
print psutil.net_connections() # 获取所有的连接信息

其他系统信息

import psutil,datetime

print psutil.boot_time()    # 获取开机时间,为linux格式,可以使用时间戳转换
print datetime.datetime.fromtimestamp(psutil.boot_time()).strftime('%Y-%m-%d %H:%M:%S') # 转换为自然时间格式 print psutil.users() # 获取当前登录系统的用户信息 print psutil.pids() # 获取系统所有进程的pid号
p = psutil.Process(1205) # 查看单个进程,实例化其中的一个pid号
print p.name() # 进程名
print p.exe() # 进程的bin路径,工作路径
print p.cwd() # 进程的工作目录绝对路径
print p.status() # 进程的状态
print p.create_time() # 进程创建时间、时间戳格式
print p.gids() # 进程的gid信息,p.uids():进程的uid信息
print p.cpu_times # 进程所占cpu的时间,包括user,system两个cpu时间
print p.cpu_affinity() # 进程和cpu的亲和度
print p.memory_percent() # 进程内存利用率
print p.memory_info # 进程内存rss,vms信息
print p.io_counters() # 进程io信息,包括读写IO数及字节数
print p.connections() # 返回打开进程socket的namedutples列表、包括fs,family,laddr等信息
print p.num_threads() # 进程开启的线程数 #通过psutil的popen方法启动的应用程序,可以跟踪该程序的所有相关信息
from subprocess import PIPE
# p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"], stdout=PIPE)
p = psutil.Popen(["/etc/init.d/mysqld","-c","start"], stdout=PIPE)
print p.name(),p.username()

  

Python—其它模块的更多相关文章

  1. Python标准模块--threading

    1 模块简介 threading模块在Python1.5.2中首次引入,是低级thread模块的一个增强版.threading模块让线程使用起来更加容易,允许程序同一时间运行多个操作. 不过请注意,P ...

  2. Python的模块引用和查找路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于“模块”这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译型的语言,比如C#中 ...

  3. Python Logging模块的简单使用

    前言 日志是非常重要的,最近有接触到这个,所以系统的看一下Python这个模块的用法.本文即为Logging模块的用法简介,主要参考文章为Python官方文档,链接见参考列表. 另外,Python的H ...

  4. Python标准模块--logging

    1 logging模块简介 logging模块是Python内置的标准模块,主要用于输出运行日志,可以设置输出日志的等级.日志保存路径.日志文件回滚等:相比print,具备如下优点: 可以通过设置不同 ...

  5. python基础-模块

    一.模块介绍                                                                                              ...

  6. python 安装模块

    python安装模块的方法很多,在此仅介绍一种,不需要安装其他附带的pip等,python安装完之后,配置环境变量,我由于中英文分号原因,环境变量始终没能配置成功汗. 1:下载模块的压缩文件解压到任意 ...

  7. python Queue模块

    先看一个很简单的例子 #coding:utf8 import Queue #queue是队列的意思 q=Queue.Queue(maxsize=10) #创建一个queue对象 for i in ra ...

  8. python logging模块可能会令人困惑的地方

    python logging模块主要是python提供的通用日志系统,使用的方法其实挺简单的,这块就不多介绍.下面主要会讲到在使用python logging模块的时候,涉及到多个python文件的调 ...

  9. Python引用模块和查找模块路径

    模块间相互独立相互引用是任何一种编程语言的基础能力.对于"模块"这个词在各种编程语言中或许是不同的,但我们可以简单认为一个程序文件是一个模块,文件里包含了类或者方法的定义.对于编译 ...

  10. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

随机推荐

  1. 父子间的通信,以及ref

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. 【转载】从使用到原理学习Java线程池

    线程池的技术背景 在面向对象编程中,创建和销毁对象是很费时间的,因为创建一个对象要获取内存资源或者其它更多资源.在Java中更是如此,虚拟机将试图跟踪每一个对象,以便能够在对象销毁后进行垃圾回收. 所 ...

  3. CSAPP 2-1 - 信息的存储

    目录 0 基础概念及摘要 1 信息存储 1.1 十六进制表示法 1.2 字数据大小 1.3 寻址和字节顺序 0 基础概念及摘要 (1) 基础概念: 现代计算机存储和处理的信息以二进制信号表示 -- 0 ...

  4. Python numpy tensorflow 中的 点乘 和 矩阵乘法

    1)点乘(即“ * ”) ---- 各个矩阵对应元素做乘法  若 w 为 m*1 的矩阵,x 为 m*n 的矩阵,那么通过点乘结果就会得到一个 m*n 的矩阵. 若 w 为 m*n 的矩阵,x 为 m ...

  5. Java学习笔记(8)---Scanner类,浅谈继承

    1.Scanner类: a.定义: java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. Scanner s = new Scanner(S ...

  6. python logging模块“另一个程序正在使用此文件,进程无法访问。”问题解决办法

    在多进程下使用python的logging模块,经常会遇到"另一个程序正在使用此文件,进程无法访问."的错误. 解决办法: https://github.com/Preston-L ...

  7. A1060 Are They Equal (25 分)

    一.技术总结 cnta.cntb用于记录小数点出现的位置下标,初始化为strlen(字符串)长度. q.p用于记录第一个非0(非小数点)出现的下标,可以用于计算次方和方便统计输出的字符串,考虑到前面可 ...

  8. matlab练习程序(计算图像旋转角度)

    比如有图像1,将其旋转n度得到图像2,问如何比较两张图像得到旋转的度数n. 算法思路参考logpolar变换: 1.从图像中心位置向四周引出射线. 2.计算每根射线所打到图像上的像素累计和,得到极坐标 ...

  9. Saiku上线部署准备(三十)

    Saiku上线部署准备 零零散散琢磨了快5个月了,终于快要上线了哈哈哈哈哈.....  激动!!! 以下是本地打包编译saiku至部署到服务器上使用的完整步骤哦 saiku部署到服务器 源码编译需要注 ...

  10. RPA 可以给医疗行业带来哪些好处

    如今,医疗保健行业通过利用颠覆性科学技术,使护理服务更加高效.医疗保健行业已经转向数字化,很多大型医疗机构开始采用 RPA(机器人流程自动化),使医疗服务的竞争力不断攀升.使用 RPA 可以完美自动化 ...