首页 > 系统相关 >psutil:系统监控和进程管理

psutil:系统监控和进程管理

时间:2024-05-09 14:35:04浏览次数:24  
标签:获取 print psutil 系统监控 进程 CPU

psutil(process and system utilities)是一个全能型的跨平台库,用 Python 编写,旨在简化对系统监控和进程管理的编程工作。
它提供丰富的接口,让你能够轻松获取系统运行时的信息,涉及的范围包括但不限于进程、CPU、内存、磁盘、网络等。
这个强大的库起源于谁的想法?它究竟有多广泛的应用场景?
psutil 不仅仅是一个库,它背后的故事、持续的维护和迭代也充分证明了开源社区的活力和魅力。
你可以在它承载的每一行代码中感受到来自全世界贡献者的智慧。
不得不提,psutil 与其他系统监控工具相比,拥有统一的接口和更丰富的功能。
无论你使用的是 Linux、Windows、macOS 还是某种 BSD 系统,它都可以让你的系统管理和监控工作如鱼得水。
项目地址:
https://github.com/giampaolo/psutil

安装

要使用 psutil,你需要确保系统中安装了 Python 2.6、2.7 或是 3.6+。使用以下命令即可快速安装:

pip install psutil

安装过程简单快捷,几乎不需要额外配置。
然而,在某些系统上,可能需要编译器和相关的头文件支持。针对不同操作系统的详细安装说明,请参阅安装文档:https://github.com/giampaolo/psutil/blob/master/INSTALL.rst

基本功能

了解基础信息是使用 psutil 的前提。来看几个核心的功能点!

进程信息

**psutil **能提供当前运行的所有进程列表,并获取进程的详细信息:

import psutil

# 获取当前运行的所有进程 ID
for pid in psutil.pids():
    process = psutil.Process(pid)
    print(process.name(), process.status())

这里不仅可以获取进程名和状态,还可以访问进程的内存占用等多种信息。

系统资源使用

通过 psutil,我们可以很轻松地监控到 CPU 和内存使用情况,甚至分析磁盘和网络的 IO:

# 获取 CPU 的完整情况 
print(psutil.cpu_times())

# 实时显示 CPU 利用率 
print(psutil.cpu_percent(interval=1))

# 检查内存使用情况 
print(psutil.virtual_memory())

# 检查磁盘使用情况 
print(psutil.disk_usage('/'))

# 获取网络 IO 统计 
print(psutil.net_io_counters(pernic=True))

psutil 的这些功能,让你无需其他额外工具,就可以在 Python 脚本中直接获取系统的实时状态。

标签:获取,print,psutil,系统监控,进程,CPU
From: https://www.cnblogs.com/luckzack/p/18182112

相关文章

  • 【攻防技术系列+Python】-- 用 Python 控制系统进程
    用Python控制系统进程由于注册表几乎可以决定整个操作系统的运行,因此它成为安全工具与恶意软件对抗的主要战场之一。除了注册表之外,对系统进程的控制也是安全工具和恶意软件的必争之地。这里我们首先要了解程序和进程的区别。程序是静态的,进程是动态的。进程可以分为系统进程......
  • electron的两个进程
    electron 有两个类别的进程,一个是主进程,另一个是渲染进程 主进程:启动后一直存在的,相当于一个树的主干并不会展示出来,是看不到的所有跟系统资源交互的操作都在这里进行操控渲染进程,新建或销毁一个渲染进程调用 app.js 文件,app.js 里面的内容就是 主进程 的内容,里面会有......
  • 查看PHP-FPM的内存占用、进程个数等信息
    查看每个PHP-FPM进程的内存占用(并排序):1ps-ylCphp-fpm--sort:rss这个命令会显示所有php-fpm进程的内存占用情况,并按内存占用大小进行排序。查看当前php-fpm总进程数:1ps-ylCphp-fpm--sort:rss|wc-l这个命令会列出php-fpm的所有进程,然后通过wc-l计算行数,从而得到......
  • 记一次java进程频繁挂掉问题排查修复
    前言最近业务部门有个java服务进程会突然无缘无故的挂掉,然后这个服务会产生一堆类似hs_err_pid19287.log这样的日志。业务部门负责人就把hs_err_pidxxx的日志发给我,让我帮忙看下问题。本文就来回顾一下,我是如何帮业务部门进行问题排查排查历程首先hs_err_pidxxx的日志有提示如......
  • redis自学(41)JVM进程缓存
      前置数据库的表规划:数据库的表尽量做分离,是因为一个商品的数据事实上是非常多的,需要对商品的数据进行解耦,字段太多查询的效率会比较低;另一方面,系统需要给数据加缓存,如果都在一张表里,那么作为缓存的话,就只有一整条数据作为缓存,一旦一条数据里的任意一个字段做了修改,整个商品......
  • 进程监控神器Supervisor 转载
    作者:Ais137https://juejin.cn/post/73544069807843737981.概述Supervisor是一个C/S架构的进程监控与管理工具,本文主要介绍其基本用法和部分高级特性,用于解决部署持久化进程的稳定性问题。2.问题场景在实际的工作中,往往会有部署持久化进程的需求,比如接口服务进程,又或者......
  • linux 进程通信之信号量
    信号量Linux函数semget();semctl();semop();信号量三个函数头文件#include<sys/sem.h>intsemget(key_t_key,int_nsems,int_semflg);intsemctl(int_semid,int_semnum,int_cmd……);intsemop(intsemid,structsembuf*_sops,size_t_nsops);se......
  • C语言 子进程段错误后变成僵尸进程
    空指针获取首元素时出现段错误,子进程异常退出,父进程没有处理。#include<stdio.h>#include<unistd.h>intmain(){pid_tpid;pid=fork();if(pid>0){printf("fatherprocessisPID:%d\n",getpid());while(1){......
  • C语言 父子进程不能共享全局变量
    父子进程不能共享全局变量。父子进程中的任何一方修改了全局变量,只是修改了副本,只对自己可见,对另一方不可见。C语言中即使加了static也不行。#include<stdio.h>#include<unistd.h>//初始值是0intflag;intmain(){pid_tpid;//父进程和子进程执行相同代码即......
  • 进程上下文详解
    由于现在大多计算机都是多核CPU,多线程往往会比单线程更快,更能够提高并发,但提高并发并不意味着启动更多的线程来执行。更多的线程意味着线程创建销毁开销加大、上下文非常频繁,你的程序反而不能支持更高的TPS。时间片多任务系统往往需要同时执行多道作业。作业数往往大于机器的CPU......