基于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的ORM框架中SQLAlchemy库的查询操作的教程
Apr 25 Python
分享Python字符串关键点
Dec 13 Python
Python django实现简单的邮件系统发送邮件功能
Jul 14 Python
基于使用paramiko执行远程linux主机命令(详解)
Oct 16 Python
利用Tkinter(python3.6)实现一个简单计算器
Dec 21 Python
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
TensorFlow Session会话控制&Variable变量详解
Jul 30 Python
Face++ API实现手势识别系统设计
Nov 21 Python
pytorch 实现打印模型的参数值
Dec 30 Python
python_matplotlib改变横坐标和纵坐标上的刻度(ticks)方式
May 16 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
python用海龟绘图写贪吃蛇游戏
Jun 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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
使用VisualStudio开发php的图文设置方法
2010/08/21 PHP
php curl基本操作详解
2013/07/23 PHP
PHP实现简单汉字验证码
2015/07/28 PHP
php实现简单的上传进度条
2015/11/17 PHP
php通过两层过滤获取留言内容的方法
2016/07/11 PHP
Laravel5中防止XSS跨站攻击的方法
2016/10/10 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
javascript:以前写的xmlhttp池,代码
2008/05/18 Javascript
一起来写段JS drag拖动代码
2010/12/09 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
详解vue 中使用 AJAX获取数据的方法
2017/01/18 Javascript
详解使用nvm管理多版本node的方法
2017/08/30 Javascript
javascript用rem来做响应式开发
2018/01/13 Javascript
JS改变页面颜色源码分享
2018/02/24 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
JS控制下拉列表左右选择实例代码
2020/05/08 Javascript
vue 解决addRoutes多次添加路由重复的操作
2020/08/04 Javascript
python代码 if not x: 和 if x is not None: 和 if not x is None:使用介绍
2016/09/21 Python
Python爬虫利用cookie实现模拟登陆实例详解
2017/01/12 Python
python实现发送邮件功能代码
2017/12/14 Python
python可视化实现代码
2019/01/15 Python
Django中自定义admin Xadmin的实现代码
2019/08/09 Python
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
俄罗斯香水在线商店:AromaCode
2019/12/04 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
计算机专业推荐信范文
2013/11/27 职场文书
校园活动策划书范文
2014/01/10 职场文书
美容院店长岗位职责
2014/04/08 职场文书
领导班子群众路线与四风问题对照检查材料思想汇报
2014/10/11 职场文书
个人政风行风自查自纠报告
2014/10/21 职场文书
2015银行年终工作总结范文
2015/05/26 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书
辞职报告(范文三篇)
2019/08/27 职场文书
NGINX 权限控制文件预览和下载的实现原理
2022/01/18 Servers