【问题标题】:using python subprocess.call to kill all running python files使用 python subprocess.call 杀死所有正在运行的 python 文件
【发布时间】:2012-03-11 12:08:32
【问题描述】:

我正在尝试(根据需要)杀死当前正在运行的所有 python 进程。
我正在使用这个命令:

from subprocess import call  
call('pkill python', shell=True)  
print 'Killed them all!'

但是,当然 - 我的程序也是一个 python 程序,所以最终,它在调用 'call' 后没有到达打印行。

我可以做些什么来避免我的程序也杀死自己,同时杀死所有其他 python 进程?
谢谢。

【问题讨论】:

    标签: python kill subprocess


    【解决方案1】:

    您可能想尝试跨平台psutil 库:

    import os
    import psutil
    
    mypid = os.getpid()
    for proc in psutil.process_iter():
        if proc.name == 'python' and proc.pid != mypid:
            proc.kill()
    

    【讨论】:

    • 我需要安装什么吗?它说:'没有名为 psutil 的模块'
    • 当然可以。查看Downloadspip install psutilapt-get install python-psutil
    【解决方案2】:

    如果您调用pgrep python,您将能够读取所有正在运行的python 进程的pid(进程标识符)。你可能需要subprocess.check_output

    然后,您可以运行所有的 pid(使用 os.kill),除了与您自己的 pid 匹配的 pid,您可以使用 os.getpid 找到它。

    【讨论】:

    • 它告诉我:'module' 对象没有属性 'check_output' --> 我做错了什么?
    • 您可能使用的是旧版本的 python。不过@bereal 的解决方案更简洁。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 2016-11-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    相关资源
    最近更新 更多