基于python调用psutil模块过程解析
作者:白马酒凉 发布时间:2022-04-09 18:22:56
标签:python,调用,psutil,模块
这篇文章主要介绍了基于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)
来源:https://www.cnblogs.com/sui84/p/8251910.html
0
投稿
猜你喜欢
- 在网站中经常会生成表格,CSV和Excel都是常用的报表格式,CSV相对来说比较简单,如果大家有疑问我会相继发布一些CSV的实例,这里主要介
- 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
- 我们编写程序最终目的还是来解决实际问题,所以必然会遇到输入输出的交互问题,python中提供了input函数用来获取用户的输入,我们可以用以
- 导语相信大家对于英语四级一点都不陌生了吧?很多学校都是要求学生必须考过英语四级,不然就不能毕业。一开始我抱着侥幸心理,心想上高中的时候英语不
- 二是什么时候CPU是空闲的?空闲是一个相对的标准。有时会CPU使用率30%以下可以定义为空闲;而有时候CPU使用率只有不到60%,就是空闲。
- 大家好,我是辣条。前言今天带来爬虫实战的第30篇文章。在挑选游戏的过程中感受学习,让你突飞猛进。python爬虫实战:steam逆向RSA登
- 一、model.py1.1 Channel Shuffledef channel_shuffle(x: Tensor, groups: in
- 1 获取轮廓OpenCV2获取轮廓主要是用cv2.findContoursimport numpy as npimport cv2im =
- CSS styles和HTML styles有什么区别?HTM style是指自定义HTML标识中一些标签,例如说在HTML中〈B〉〈/B〉
- 阅读上一篇:微软建议的ASP性能优化28条守则(2) 技巧 5:不要将数据库连接缓存在 Application 或 Session 对象中
- import timefrom selenium import webdriverfrom selenium.webdriver.commo
- 1. 引言在日常工作中,大家都需要进行字典的相关操作,对于某些初学者,经常会写一堆繁琐的代码来实现某项简单的功能。本篇文章重点介绍一些在Py
- 闭包account=0def atm(num,flag): global account  
- 最近一直在研究python+selenium+beautifulsoup的爬虫,但是存入数据库还有写入txt文件里面的时候一直都是unico
- 我们有时候看到一些文章因为一行的字符超长而把一些表格或DIV撑开或字符写到溢出了.如何防止表格防止撑开,表格不被内容撑开,单行字符超长div
- 本文实例讲述了Python实现的爬取豆瓣电影信息功能。分享给大家供大家参考,具体如下:本案例的任务为,爬取豆瓣电影top250的电影信息(包
- Python pip安装lxml出错的问题解决办法1. 在使用pip安装lxml过程中出现了一下错误: &
- 要写爬虫爬取大量的数据,就会面临ip被封的问题,虽然可以通过设置延时的方法来延缓对网站的访问,但是一旦访问次数过多仍然会面临ip被封的风险,
- 一般调试程序的时候都比较倾向print,利用直接打印的方法作出判断,但是print只能打印出结果,对类型无法作出判断。例如:复制代码a =
- 问题描述使用pandas库的read_excel()方法读取外部excel文件报错, 截图如下好像是缺少了什么方法的样子问题分析分析个啥,