基于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 18 Python
Python中的作用域规则详解
Jan 30 Python
Python实现竖排打印传单手机号码易撕条
Mar 16 Python
用Python实现web端用户登录和注册功能的教程
Apr 30 Python
python 简单备份文件脚本v1.0的实例
Nov 06 Python
用PyInstaller把Python代码打包成单个独立的exe可执行文件
May 26 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
pandas实现DataFrame显示最大行列,不省略显示实例
Dec 26 Python
在tensorflow中实现屏蔽输出的log信息
Feb 04 Python
Python实现括号匹配方法详解
Feb 10 Python
Python3.x+pyqtgraph实现数据可视化教程
Mar 14 Python
python 使用openpyxl读取excel数据
Feb 18 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本地服务器分享
2013/02/19 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
Laravel 5框架学习之环境与配置
2015/04/08 PHP
php实现背景图上添加圆形logo图标的方法
2016/11/17 PHP
PHP大文件分割上传 PHP分片上传
2017/08/28 PHP
PHP实现简单登录界面
2019/10/23 PHP
25个优雅的jQuery Tooltip插件推荐
2011/05/25 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
4种JavaScript实现简单tab选项卡切换的方法
2016/01/06 Javascript
深入浅析javascript中的作用域(推荐)
2016/07/19 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
JavaScript实现猜数字游戏
2020/05/20 Javascript
跟老齐学Python之正规地说一句话
2014/09/28 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
python中with语句结合上下文管理器操作详解
2019/12/19 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
CSS3 实现童年的纸飞机
2019/05/05 HTML / CSS
处理textarea中的换行和空格
2019/12/12 HTML / CSS
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
编辑个人求职信范文
2013/09/21 职场文书
书香校园活动方案
2014/02/28 职场文书
公务员更新知识培训实施方案
2014/03/31 职场文书
知识竞赛拉拉队口号
2014/06/16 职场文书
离婚协议书范本样本
2014/08/19 职场文书
2014年社区综治工作总结
2014/11/17 职场文书
个人维稳承诺书
2015/05/04 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
Jsonp劫持学习
2021/04/01 PHP
Python利器openpyxl之操作excel表格
2021/04/17 Python
redis哨兵常用命令和监控示例详解
2021/05/27 Redis
浅谈 JavaScript 沙箱Sandbox
2021/11/02 Javascript
在NumPy中深拷贝和浅拷贝相关操作的定义和背后的原理
2022/04/14 Python