基于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为什么不需要三目运算符和switch
Jun 17 Python
python中的break、continue、exit()、pass全面解析
Aug 05 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
Jan 02 Python
python多线程之事件Event的使用详解
Apr 27 Python
Python基础学习之时间转换函数用法详解
Jun 18 Python
python如何获取列表中每个元素的下标位置
Jul 01 Python
Python 线程池用法简单示例
Oct 02 Python
python实现查找所有程序的安装信息
Feb 18 Python
python GUI库图形界面开发之PyQt5信号与槽基础使用方法与实例
Mar 06 Python
python 绘制场景热力图的示例
Sep 23 Python
python基础学习之生成器与文件系统知识总结
May 25 Python
只需要100行Python代码就可以实现的贪吃蛇小游戏
May 27 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+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
基于php实现随机合并数组并排序(原排序)
2015/11/26 PHP
PHP解压tar.gz格式文件的方法
2016/02/14 PHP
asp.net和php的区别点总结
2019/10/10 PHP
PHP标准库 (SPL)――Countable用法示例
2020/06/05 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
js、jquery图片动画、动态切换示例代码
2014/06/03 Javascript
jQuery实现移动 和 渐变特效的点击事件
2015/02/26 Javascript
jquery让指定的元素闪烁显示的方法
2015/03/17 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
JavaScript编程中的Promise使用大全
2015/07/28 Javascript
对象转换为原始值的实现方法
2016/06/06 Javascript
JS获取input file绝对路径的方法(推荐)
2016/08/02 Javascript
关于数据与后端进行交流匹配(点亮星星)
2016/08/03 Javascript
HTML5基于Tomcat 7.0实现WebSocket连接并实现简单的实时聊天
2016/10/31 Javascript
jQuery Validate 数组 全部验证问题
2017/01/12 Javascript
jQuery 全选 全不选 事件绑定的实现代码
2017/01/23 Javascript
Vue input控件通过value绑定动态属性及修饰符的方法
2017/05/03 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
Element-UI Table组件上添加列拖拽效果实现方法
2018/04/14 Javascript
深入浅析JS中的严格模式
2018/06/04 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
python变量的存储原理详解
2019/07/10 Python
Python log模块logging记录打印用法解析
2020/01/20 Python
HTML5 Canvas 起步(2) - 路径
2009/05/12 HTML / CSS
RentCars.com巴西:汽车租赁网站
2016/08/22 全球购物
main 主函数执行完毕后,是否可能会再执行一段代码,给出说明
2012/12/05 面试题
行政部岗位职责范本
2014/03/13 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
MSSQL基本语法操作
2022/04/11 SQL Server