打印进程树,结合psutil

本文介绍如何利用psutil库来实现打印操作系统中的进程树,展示进程间的父子关系。
摘要由CSDN通过智能技术生成

打印进程树,结合psutil

# coding: utf-8
import psutil
from functools import wraps

# ===================================================================
# --- slots classes
# ===================================================================
class SlotBase(object):
    def __init__(self, *args, **kwargs):
        setted = set()
        kwargs_ = dict(izip(self.__slots__, args))
        kwargs_.update(kwargs)
        for key, value in kwargs_.iteritems():
            setattr(self, key, value)
            setted.add(key)
        for key in set(self.__slots__) - setted:
            setattr(self, key, None)


class processinfo(SlotBase):
    __slots__ = ('ppidinfo', 'child_pids', 'memory', 'create_time', 'cmdline',
                 'environ')

def default_if_catch(exception_clses, default=None):
    def _default_if_catch(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            try:
                return func(*args, **kwargs)
            except exception_clses:
                return default
        return wrapper
    return _default_if_catch


class Process(object):
    def __init__(self, pid, top_paths=None):
        self.pid = pid
        self.top_paths = top_paths
        self.process = psutil.Process(pid=pid)
        self._tree_string = ''

    def cmdline(self):
        try:
            return self.process.cmdline()[0]
        except Exception as e:
            
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值