python过滤指定进程

简介: python过滤指定进程

在许多情况下,我们需要监控或管理操作系统中的进程,比如结束僵尸进程或是对特定进程的资源占用进行分析。Python作为一门强大的脚本语言,可以借助一些内置和第三方库来简化这一任务。本文将介绍如何使用Python脚本来过滤指定的系统进程,并给出几个实用的代码示例。

示例1:使用psutil库过滤进程

psutil(process and system utilities)是一个跨平台库,可以用来获取系统运行时的信息,它提供了丰富的进程管理功能。

首先,你需要安装psutil库:

pip install psutil• 1.

然后,你可以使用以下脚本来列出所有进程,并过滤出特定名称的进程:

import psutil

def filter_processes_by_name(name):
    """过滤出特定名称的所有进程"""
    for proc in psutil.process_iter(['pid', 'name']):
        if proc.info['name'] == name:
            print(f"PID: {proc.info['pid']}, Process Name: {proc.info['name']}")

# 使用函数过滤出名称为"python"的进程
filter_processes_by_name("python")

示例2:使用ossubprocess模块过滤进程

如果你希望不使用第三方库,可以结合ossubprocess模块来实现类似的功能。

import subprocess
import os

def filter_processes_by_name(name):
    """通过调用系统命令来过滤进程"""
    try:
        # UNIX系统可以使用'ps aux',而Windows系统可以使用'tasklist'命令
        processes = subprocess.check_output(['ps', 'aux']).decode('utf-8')
        # 按行分割获取单个进程信息
        for line in processes.split('\n'):
            if name in line:
                print(line.strip())
    except Exception as e:
        print(f"An error occurred: {e}")

# 使用函数过滤出名称中包含"python"的进程
filter_processes_by_name("python")

这段代码首先使用subprocess.check_output执行系统命令来获取当前运行的所有进程信息,然后通过字符串操作过滤出含有特定名称的进程。

示例3:终止特定的进程

在过滤出特定进程之后,我们可能想要对其执行一些操作,如终止进程。以下是如何使用psutil库实现的示例:

import psutil

def kill_processes_by_name(name):
    """终止所有指定名称的进程"""
    for proc in psutil.process_iter(['pid', 'name']):
        if proc.info['name'] == name:
            proc.kill()  # 终止该进程
            print(f"Killed PID: {proc.info['pid']}, Process Name: {proc.info['name']}")

# 终止名称为"notepad"的进程
kill_processes_by_name("notepad.exe")

在执行终止进程的操作时,请确保你有适当的权限,并且清楚终止进程可能带来的后果。

示例4:监控进程状态

有时候,我们可能需要监控特定进程的状态,以下是一个如何实现的示例:

import psutil
import time

def monitor_process(pid):
    """监控特定PID的进程状态"""
    try:
        while True:
            proc = psutil.Process(pid)
            print(f"PID: {pid}, CPU: {proc.cpu_percent()}%, Memory: {proc.memory_percent()}%")
            time.sleep(1)  # 间隔1秒监控一次
    except psutil.NoSuchProcess:
        print(f"No such process with PID: {pid}")

# 监控PID为1234的进程
monitor_process(1234)

总结

在本文中,我们探讨了如何使用Python来过滤和管理系统中的进程。我们介绍了使用psutil库来过滤进程、使用ossubprocess模块来调用系统命令、终止进程以及监控进程状态的方法。这些脚本可以帮助你自动化执行系统级的任务和监控,但请谨慎操作,以免造成不必要的系统问题。在进行任何进程管理操作之前,确保你完全理解它们的影响,特别是在生产环境中。


目录
相关文章
|
5天前
|
消息中间件 安全 调度
基于Python的性能优化(线程、协程、进程)
一、多线程 在CPU不密集、IO密集的任务下,多线程可以一定程度的提升运行效率。
|
7天前
|
监控 数据可视化 Java
Python中的线程池与进程池
【5月更文挑战第19天】本文探讨Python中提高程序性能的关键——线程池和进程池。线程池与进程池是并行编程工具,有效利用多核处理器,加速程序执行。线程是运算调度单位,进程是资源分配和调度基础。线程池与进程池管理线程和进程,减少创建销毁开销。
16 0
|
8天前
|
安全 Python
Python 多进程日志输出到同一个文件并实现日志回滚
Python 多进程想要实现将日志输出到同一个文件中,使用同一个日志句柄,且日志需要按照日期,大小回滚。
|
12天前
|
Java 测试技术 Python
Python的多线程允许在同一进程中并发执行任务
【5月更文挑战第17天】Python的多线程允许在同一进程中并发执行任务。示例1展示了创建5个线程打印"Hello World",每个线程调用同一函数并使用`join()`等待所有线程完成。示例2使用`ThreadPoolExecutor`下载网页,创建线程池处理多个URL,打印出每个网页的大小。Python多线程还可用于线程间通信和同步,如使用Queue和Lock。
39 1
|
13天前
|
数据处理 Python
Python并发编程:实现高效的多线程与多进程
Python作为一种高级编程语言,提供了强大的并发编程能力,通过多线程和多进程技术,可以实现程序的并发执行,提升系统的性能和响应速度。本文将介绍Python中多线程和多进程的基本概念,以及如何利用它们实现高效的并发编程,解决实际开发中的并发性问题。
|
14天前
|
运维 监控 Ubuntu
Python实现ubuntu系统进程内存监控
Python实现ubuntu系统进程内存监控
18 1
|
14天前
|
开发者 Python
在Python中查询进程信息的实用指南
在Python中查询进程信息的实用指南
12 2
|
14天前
|
消息中间件 Linux 调度
Python的进程锁,进程队列
Python的进程锁,进程队列
125 3
|
14天前
|
数据采集 监控 调度
Python的进程,以及进程同步,守护进程详细解读
Python的进程,以及进程同步,守护进程详细解读
142 4
|
14天前
|
调度 Python 容器
【python】-详解进程与线程
【python】-详解进程与线程