python处理process(windows)

python根据进程名称获取进程id、taskkill进程

 

import os
import psutil
from psutil import NoSuchProcess


class ProcessUtilCls:

    # 停止进程(windows)。
    # 参数:tag =1时按照process_name停止进程,否则按照pids[pid1,pid2...]停止进程
    @staticmethod
    def process_do_taskkill(tag: int, pids: list, p_name='chrome.exe'):
        if 1 == tag:
            _cmd = 'taskkill /im ' + p_name + ' /F > NULL'
            p_name = p_name.lower()
            for _p in psutil.process_iter():
                if p_name in _p.name():
                    os.system(_cmd)
        else:
            for i in pids:
                _cmd = 'taskkill /PID ' + str(i) + ' /F > NULL'
                os.system(_cmd)

    # 根据process_name得到相关的所有pid
    @staticmethod
    def get_pids(pname: str):
        # 当前所有pid
        current_pids = [p.pid for p in psutil.process_iter()]
        _l = []
        for i in current_pids:
            try:
                _p = psutil.Process(i)
            except NoSuchProcess:
                continue
            if pname == _p.name():
                # 保存process_name=pname的所有pid
                _l.append(i)

        return _l

    # 比对两个list,返回after相较于before的差集
    @staticmethod
    def diff_2list(before: list, after: list):
        _l = []
        t = {}
        for i in before:
            t[i] = 1
        for i in after:
            if t.get(i) is None:
                _l.append(i)
        return _l


ProcessUtil = ProcessUtilCls()

 

posted @ 2024-07-25 19:15  _titleInfo  阅读(9)  评论(0编辑  收藏  举报
//雪花飘落效果