【问题标题】:PYTHON How to detect when a proccess has been endedPYTHON 如何检测进程何时结束
【发布时间】:2016-08-04 05:06:23
【问题描述】:

给定一个进程名称(PID 未知),我如何检测进程何时结束(以及如何找出给定进程名称的 PID)?另外,我正在为 Windows 资源管理器执行此操作,所以我将如何跟踪进程名称,因为它随着用户在目录中移动而发生变化。

如果有帮助,我正在使用 Python 2.7 和 windows。

谢谢

【问题讨论】:

    标签: python pid


    【解决方案1】:

    正如 Padraic Cunningham 在这里所写: Python: How to get PID by process name? 为了从进程名中获取pid:

    from subprocess import check_output
    def get_pid(name):
        return int(check_output(["pidof","-s",name]))
    

    正如马特在这里写的:https://stackoverflow.com/a/6767792/5088142 为了使用其 pid 获取进程的状态,您可以使用 psutil https://github.com/giampaolo/psutil

    import psutil
    print psutil.Process(pid).status
    

    编辑:您可以将这两部分组合成以下代码:

    from subprocess import check_output
    import psutil
    def get_pid(name):
        return int(check_output(["pidof","-s",name]))
    def get_status(name)
        pid = get_pid(name)
        print psutil.Process(pid).status
    

    【讨论】:

    • 谢谢你,但另一个问题,我如何能够不断测试它(我很抱歉我很新,但我意识到检查环境中的更新很重要porgramming)再次感谢你:)
    • 我添加了一个新函数,它结合了这两部分代码。您可以调用函数 get_status("process_name") 并获取进程状态。 (请注意,您需要安装 psutil)
    • thx,但是您是否碰巧知道一种方法可以在我的代码中不断检查这一点,或者这不可能?还是谢谢你:)
    • 您可以使用 psutil import psutil pids = [p for p in psutil.pids() if psutil.Process(p).name() == process_name] print(pids) 获取所有 pid
    • 请提供详细的场景,以便我们了解您的需求。你想检查什么?多久一次?
    猜你喜欢
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 2012-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-14
    • 2016-09-29
    相关资源
    最近更新 更多