基于python调用psutil模块过程解析


Posted in Python onDecember 20, 2019

这篇文章主要介绍了基于python调用psutils模块过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

用Python来编写脚本简化日常的运维工作是Python的一个重要用途。在Linux下,有许多系统命令可以让我们时刻监控系统运行的状态,如ps,top,free等等。要获取这些系统信息,Python可以通过subprocess模块调用并获取结果。但这样做显得很麻烦,尤其是要写很多解析代码。

在Python中获取系统信息的另一个好办法是使用psutil这个第三方模块。顾名思义,psutil = process and system utilities,它不仅可以通过一两行代码实现系统监控,还可以跨平台使用,支持Linux/UNIX/OSX/Windows等,是系统管理员和运维小伙伴不可或缺的必备模块。

代码如下

oshelper.py

#encoding=utf-8
import psutil 
import datetime 
 
#查看cpu的信息 
print u"CPU 个数 %s"%psutil.cpu_count() 
print u"物理CPU个数 %s"%psutil.cpu_count(logical=False) 
print u"CPU uptimes" 
print psutil.cpu_times() 
print "" 
 
#查看内存信息 
mem = psutil.virtual_memory()
print u"系统总内存 %s G"%(mem.total/1024/1024/1024) 
print u"系统可用内存 %s G"%(mem.available/1024/1024/1024) 
mem_rate = int(mem.available)/float(mem.total) 
print u"系统内存使用率 %s %%"%int(mem_rate*100) 

#交换分区
swapmem = psutil.swap_memory()
print u"交换分区 %s G"%(swapmem.total/1024/1024/1024) 
print u"交换分区可用 %s G"%(swapmem.free/1024/1024/1024) 
print u"交换分区使用率 %s %%"%int(swapmem.percent) 
#系统启动时间 
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) 
nis=psutil.net_io_counters(pernic=True)
print u"网卡 " ,tuple(nis)

#进程 进程的各种详细参数 
def show_process(pid):
  try:
    p = psutil.Process(pid) 
  
    p.name()  #进程名
    #p.exe()  #进程的bin路径
    #p.cwd()  #进程的工作目录绝对路径
    p.status()  #进程状态
    p.create_time() #进程创建时间
    #p.uids()  #进程uid信息
    #p.gids()  #进程的gid信息
    p.cpu_times()  #进程的cpu时间信息,包括user,system两个cpu信息
    #p.cpu_affinity() #get进程cpu亲和度,如果要设置cpu亲和度,将cpu号作为参考就好
    p.memory_percent() #进程内存利用率
    p.memory_info()  #进程内存rss,vms信息
    p.io_counters()  #进程的IO信息,包括读写IO数字及参数
    #p.connectios()  #返回进程列表
    p.num_threads() #进程开启的线程数
    '''
    听过psutil的Popen方法启动应用程序,可以跟踪程序的相关信息
    from subprocess import PIPE
    p = psutil.Popen(["/usr/bin/python", "-c", "print('hello')"],stdout=PIPE)
    '''
    p.name()
    #p.username()
  except:
    pass
'''
pids=psutil.pids()
for pid in pids:
  show_process(pid)
'''
with open (r'd:\temp\test.txt','w') as f:
  sys.stdout=f
  for proc in psutil.process_iter():
  '''
    if proc.name() == "w3wp.exe":
      cpu_threshold=proc.cpu_percent(interval=2)/24 
      print proc.name(),proc.create_time(),cpu_threshold
      p.terminate() proc .kill()
      Iterate over all ports this process is listening to 
    for con in proc.get_connections():
      con
  '''
    pa=proc.as_dict()
    print pa.get('name'),pa.get('create_time'),pa.get('pid'),pa.get('status'),pa.get('connections'),pa.get('open_files'),pa.get('cpu_percent'),pa.get('memory_percent'),pa.get('username'),pa.get('num_threads')

print u"当前进程:",psutil.Process(os.getpid()).cmdline()

#磁盘 磁盘的使用量等等 
dps=psutil.disk_partitions()
for dp in dps:
  dp
du=psutil.disk_usage('/')
print u"硬盘总共容量 %s G"%(du.total/1024/1024/1024) 
print u"硬盘可用 %s G"%(du.free/1024/1024/1024)
print u"硬盘已用 %s %%"%(du.percent)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 常用string函数详解
May 30 Python
python根据unicode判断语言类型实例代码
Jan 17 Python
使用11行Python代码盗取了室友的U盘内容
Oct 23 Python
python pip源配置,pip配置文件存放位置的方法
Jul 12 Python
Python3网络爬虫开发实战之极验滑动验证码的识别
Aug 02 Python
Python如何实现强制数据类型转换
Nov 22 Python
Python3 虚拟开发环境搭建过程(图文详解)
Jan 06 Python
python模拟斗地主发牌
Apr 22 Python
Python selenium爬取微博数据代码实例
May 22 Python
matplotlib图例legend语法及设置的方法
Jul 28 Python
python在地图上画比例的实例详解
Nov 13 Python
python调用百度AI接口实现人流量统计
Feb 03 Python
python如何使用jt400.jar包代码实例
Dec 20 #Python
基于python使用tibco ems代码实例
Dec 20 #Python
使用python实现数组、链表、队列、栈的方法
Dec 20 #Python
python隐藏类中属性的3种实现方法
Dec 19 #Python
Python合并2个字典成1个新字典的方法(9种)
Dec 19 #Python
关于Python中定制类的比较运算实例
Dec 19 #Python
在python中利用try..except来代替if..else的用法
Dec 19 #Python
You might like
关于shopex同步ucenter的redirect问题,导致script不运行
2013/04/10 PHP
解析php中const与define的应用区别
2013/06/18 PHP
php代码书写习惯优化小结
2013/06/20 PHP
thinkPHP删除前弹出确认框的简单实现方法
2016/05/16 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
Yii Framework框架开发微信公众平台示例
2020/04/26 PHP
页面只有一个text的时候,回车自动submit的解决方法
2010/08/12 Javascript
JS中的this变量的使用介绍
2013/10/21 Javascript
JavaScript中常见的字符串操作函数及用法汇总
2015/05/04 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
JS使用正则表达式获取小括号、中括号及花括号内容的方法示例
2018/06/01 Javascript
详解axios中封装使用、拦截特定请求、判断所有请求加载完毕)
2019/04/09 Javascript
vue.js中使用echarts实现数据动态刷新功能
2019/04/16 Javascript
详解微信小程序获取当前时间及日期的方法
2019/04/28 Javascript
js判断在哪个浏览器打开项目的方法
2020/01/21 Javascript
vue简单封装axios插件和接口的统一管理操作示例
2020/02/02 Javascript
Vue实现简单计算器案例
2020/02/25 Javascript
[01:29:42]Liquid vs VP Supermajor决赛 BO 第一场 6.10
2018/07/05 DOTA
[02:10]DOTA2 TI10勇士令状玩法及不朽Ⅰ展示:焕新世界,如你所期
2020/05/29 DOTA
python利用beautifulSoup实现爬虫
2014/09/29 Python
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
Django 添加静态文件的两种实现方法(必看篇)
2017/07/14 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
PyQtGraph在pyqt中的应用及安装过程
2019/08/04 Python
python实现WebSocket服务端过程解析
2019/10/18 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
浅谈Python访问MySQL的正确姿势
2020/01/07 Python
Python程序控制语句用法实例分析
2020/01/14 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
Python错误的处理方法
2020/06/23 Python
租租车:国际租车、美国租车、欧洲租车、特价预订国外租车(中文服务)
2018/03/28 全球购物
高一化学教学反思
2014/02/05 职场文书
《登鹳雀楼》教学反思
2014/04/09 职场文书
本科应届生自荐信
2014/06/29 职场文书
唐山大地震观后感
2015/06/05 职场文书