基于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 基础学习第二弹 类属性和实例属性
Aug 27 Python
python的绘图工具matplotlib使用实例
Jul 03 Python
跟老齐学Python之玩转字符串(2)更新篇
Sep 28 Python
跟老齐学Python之从格式化表达式到方法
Sep 28 Python
pandas 选择某几列的方法
Jul 03 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
python 画三维图像 曲面图和散点图的示例
Dec 29 Python
Python在图片中插入大量文字并且自动换行
Jan 02 Python
Python产生一个数值范围内的不重复的随机数的实现方法
Aug 21 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 Python
python pyg2plot的原理知识点总结
Feb 28 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
C# Assembly类访问程序集信息
2009/06/13 PHP
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
JQUERY表单暂存功能插件分享
2016/02/23 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
深入理解requestAnimationFrame的动画循环
2016/09/20 Javascript
微信小程序 实战实例开发流程详细介绍
2017/01/05 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
JavaScript中双符号的运算详解
2017/03/12 Javascript
axios中cookie跨域及相关配置示例详解
2017/12/20 Javascript
angular实现页面打印局部功能的思考与方法
2018/04/13 Javascript
详解vue+webpack+express中间件接口使用
2018/07/17 Javascript
学习RxJS之JavaScript框架Cycle.js
2019/06/17 Javascript
vuex vue简单使用知识点总结
2019/08/29 Javascript
Javascript实现贪吃蛇小游戏(含详细注释)
2020/10/23 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[52:02]DOTA2-DPC中国联赛 正赛 Phoenix vs Dragon BO3 第二场 2月26日
2021/03/11 DOTA
Python实现配置文件备份的方法
2015/07/30 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
梅尔频率倒谱系数(mfcc)及Python实现
2019/06/18 Python
python如何删除文件中重复的字段
2019/07/16 Python
Flask框架实现的前端RSA加密与后端Python解密功能详解
2019/08/13 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
用Python实现定时备份Mongodb数据并上传到FTP服务器
2021/01/27 Python
挪威户外活动服装和装备购物网站:Bergfreunde挪威
2016/10/20 全球购物
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
荷兰睡眠专家:Beter Bed
2020/11/23 全球购物
仓库管理专业个人的自我评价
2013/12/30 职场文书
打架检讨书100字
2014/01/08 职场文书
内勤岗位职责
2015/02/10 职场文书
文言文辞职信
2015/02/28 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书
golang特有程序结构入门教程
2021/06/02 Python
centos8安装MongoDB的详细过程
2021/10/24 MongoDB