Python获取某一进程的CPU利用率的方法详解

 更新时间:2024年02月27日 10:03:48   作者:水花花花花花  
这篇文章主要为大家详细介绍了如何使用Python实现获取某一进程的CPU利用率,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下

一、运行代码

import time
import psutil
 
_time = getattr(time, 'monotonic', time.time)
sum_cpus = psutil.cpu_count() or 1 #计算机的CPU核心数量,如果无法获取,则将核心数设置为1
 
def timer():
    return _time() * sum_cpus  #返回当前时间乘以CPU核心数量
 
pid_cpuinfo = {} #初始化一个空字典,用于存储进程ID与CPU信息的映射关系
 
def GetProcessCPU_Pre(id): #计算并返回给定进程ID的CPU利用率
    p = psutil.Process(id) #根据提供的进程ID,使用psutil库的Process类实例化一个进程对象
    tt = p.cpu_times()  # 获取进程的CPU时间信息
    st0, tt0_0, tt0_1 = pid_cpuinfo.get(id, (0, 0, 0))  # 获取之前保存的进程ID对应的CPU信息,初始时设定为0
    st1, tt1_0, tt1_1 = timer(), tt.user, tt.system #计算当前时间、进程用户态CPU时间和系统态CPU时间
 
    delta_proc = (tt1_0 - tt0_0) + (tt1_1 - tt0_1) #计算进程CPU时间的增量
    delta_time = st1 - st0 #计算时间增量
    try:
        cpus_percent = ((delta_proc / delta_time) * 100) #计算CPU利用率的百分比
    except:
        cpus_percent = 0.0
 
    pid_cpuinfo[id] = [st1, tt1_0, tt1_1] ##更新进程ID对应的CPU信息
    return "{:.2f}".format(cpus_percent) #返回格式化后的CPU利用率值,保留两位小数
 
# 输入需要检查的进程ID
process_id = 25400 #25400为我此时要计算cpu利用率的进程ID
result = GetProcessCPU_Pre(process_id)
print(result)

二、查看进程ID

在不同的操作系统中,查看进程ID的方法可能会有所不同。以下是一些常见操作系统中查看进程ID的方法:

Windows:

1. 打开任务管理器:

可以使用快捷键`Ctrl + Shift + Esc`来打开任务管理器。

在任务管理器中,切换到“详细信息”选项卡。

在“详细信息”选项卡中,可以查看各个进程的PID(Process ID)。

macOS:

1. 打开活动监视器:

通过`Spotlight`搜索栏搜索“活动监视器”并打开。

在“CPU”或“进程”选项卡中,你可以看到各个进程的PID。

Linux (Ubuntu):

1. 使用命令行:

打开终端。

输入以下命令可以查看所有正在运行的进程及其PID:

ps -ef

2. 使用系统监控工具:

有些Linux发行版提供了系统监控工具,如`System Monitor`,通过这类图形界面工具也可以查看进程及其PID。

无论在哪种操作系统下,通常情况下都可以通过任务管理器、活动监视器或命令行来查看运行的进程及其对应的进程ID。根据你使用的操作系统和喜好选择适合你的方法即可轻松查看进程ID。

三、运行结果

在PyCharm中的运行结果如下:

在ubantu系统运行可参考此教程:在Ubuntu系统中运行python代码的几个步骤

方法补充

除了上文的方法,小编还为大家整理了其他Python获取进程的CPU利用率的方法,希望对大家有所帮助

_timer = getattr(time, 'monotonic', time.time)
num_cpus = psutil.cpu_count() or 1
def timer():
    return _timer() * num_cpus
 
pid_cpuinfo = {}
def GetProcessCPU_Pre(id):
    p = psutil.Process(id)
    pt = p.cpu_times()
    st1,pt1_0,pt1_1 = timer(),pt.user,pt.system   # new
    st0,pt0_0,pt0_1 = pid_cpuinfo.get(id,(0,0,0)) # old
 
    delta_proc = (pt1_0 - pt0_0) + (pt1_1 - pt0_1)
    delta_time = st1 - st0
    try:
        cpus_percent = ((delta_proc / delta_time) * 100)
    except:
        cpus_percent = 0.0
 
    pid_cpuinfo[id] = [st1,pt1_0,pt1_1]
    return "{:.2f}".format(cpus_percent)

python监控指定进程的CPU利用率

import time
from tkinter import simpledialog
import tkinter
import psutil
import os
 
root=tkinter.Tk()
root.withdraw()
 
pid=int(simpledialog.askstring(title="pid",prompt="输入进程号"))
p=psutil.Process(pid)
 
filename=p.name().split(".")[0]+"Process"+str(pid)+".csv"
#if os.path.exists("./"+filename):
#    os.remove("./"+filename)
 
# 文件第一行写入进程名
f=open("./"+filename,"a+")
f.write(p.name()+"\n")
f.write("TIME,%CPU,%MEM\n")
f.close()
 
# 循环记录时间、进程CPU利用率,内存占用
while True:
 
    f=open("./"+filename,"a+")
    current_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
    cpu_percent=p.cpu_percent()
    mem_percent=p.memory_percent()
    line=current_time+","+str(cpu_percent)+","+str(mem_percent)
    f.write(line+"\n")
    f.close()
    time.sleep(3)

到此这篇关于Python获取某一进程的CPU利用率的方法详解的文章就介绍到这了,更多相关Python获取进程CPU利用率内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JAVA SWT事件四种写法实例解析

    JAVA SWT事件四种写法实例解析

    这篇文章主要介绍了JAVA SWT事件四种写法实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Python实例方法、类方法、静态方法的区别与作用详解

    Python实例方法、类方法、静态方法的区别与作用详解

    这篇文章主要介绍了Python实例方法、类方法、静态方法的区别与作用,结合实例形式分析了Python面向对象程序设计中实例方法、类方法、静态方法的概念、原理、用法及相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • Python SELENIUM上传文件或图片实现过程

    Python SELENIUM上传文件或图片实现过程

    这篇文章主要介绍了Python SELENIUM上传文件或图片实现过程,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • 基于python 的Pygame最小开发框架

    基于python 的Pygame最小开发框架

    这篇文章主要介绍了基于python 的Pygame最小开发框架,文章基于python的相关资料围绕主题展开详细内容需要的小伙伴可以参考一下
    2022-04-04
  • python selenium 弹出框处理的实现

    python selenium 弹出框处理的实现

    这篇文章主要介绍了python selenium 弹出框处理的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • python selenium 获取标签的属性值、内容、状态方法

    python selenium 获取标签的属性值、内容、状态方法

    今天小编就为大家分享一篇python selenium 获取标签的属性值、内容、状态方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python实现词云图词频统计

    Python实现词云图词频统计

    这篇文章主要为大家详细介绍了Python数据分析中的词频统计和词云图可视化,文中的示例代码讲解详细,对我们学习Python有一定的帮助,需要的可以参考一下
    2022-12-12
  • Python实现的多进程和多线程功能示例

    Python实现的多进程和多线程功能示例

    这篇文章主要介绍了Python实现的多进程和多线程功能,结合实例形式分析了Python多线程与多进程实现分布式系统功能相关操作技巧,需要的朋友可以参考下
    2018-05-05
  • 在Python中预先初始化列表内容和长度的实现

    在Python中预先初始化列表内容和长度的实现

    今天小编就为大家分享一篇在Python中预先初始化列表内容和长度的实现,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • python flask实现分页效果

    python flask实现分页效果

    这篇文章主要为大家详细介绍了python flask实现分页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06

最新评论