基于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根据文件大小打log日志
Oct 09 Python
Python写的英文字符大小写转换代码示例
Mar 06 Python
Python下载懒人图库JavaScript特效
May 28 Python
浅谈Python中函数的参数传递
Jun 21 Python
django 2.0更新的10条注意事项总结
Jan 05 Python
解决DataFrame排序sort的问题
Jun 07 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
Aug 31 Python
python使用xlrd和xlwt读写Excel文件的实例代码
Sep 05 Python
如何用Python破解wifi密码过程详解
Jul 12 Python
MATLAB数学建模之画图汇总
Jul 16 Python
Python基于百度API识别并提取图片中文字
Jun 27 Python
Python Pandas读取Excel日期数据的异常处理方法
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
在同一窗体中使用PHP来处理多个提交任务
2006/10/09 PHP
PHP执行zip与rar解压缩方法实现代码
2010/12/05 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
PHP高手需要要掌握的知识点
2014/08/21 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
PHP使用DOM和simplexml读取xml文档的方法示例
2017/02/08 PHP
PHP实现的Redis多库选择功能单例类
2017/07/27 PHP
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
百度UEditor编辑器如何关闭抓取远程图片功能
2015/03/03 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
2015/06/19 Javascript
jQuery实现滚动切换的tab选项卡效果代码
2015/08/26 Javascript
jQuery实现固定在网页顶部的菜单效果代码
2015/09/02 Javascript
JavaScript中实现键值对应的字典与哈希表结构的示例
2016/06/12 Javascript
less简单入门(CSS 预处理语言)
2017/03/08 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
ajax前台后台跨域请求处理方式
2018/02/08 Javascript
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
python学习手册中的python多态示例代码
2014/01/21 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
python实现超市商品销售管理系统
2019/11/22 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
Python Tkinter图形工具使用方法及实例解析
2020/06/15 Python
python3排序的实例方法
2020/10/20 Python
肯尼亚网上商城:Kilimall
2016/08/20 全球购物
EJB timer的种类
2014/10/28 面试题
标准毕业生自荐信
2014/06/24 职场文书
学习考察心得体会
2014/09/04 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014年双拥工作总结
2014/11/21 职场文书
Pytorch 中net.train 和 net.eval的使用说明
2021/05/22 Python
只用Python就可以制作的简单词云
2021/06/07 Python
MySQL数据库表约束讲解
2022/06/21 MySQL