繁体   English   中英

如何杀死后台 python 进程?

[英]How can i kill background python processes?

我想要 python 语法,它会给我通过 python 本身运行的后台进程列表,并一次杀死所有这些进程。 我应该在以下代码中进行哪些修改?

我编写了这段代码来获取所有正在运行的进程并按其名称杀死特定的进程。

import psutil

for proc in psutil.process_iter():
    try:
        # Get process name & pid from process object.
        processName = proc.name()
        processID = proc.pid
        print(processName , ' ::: ', processID)
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
        pass

for proc in psutil.process_iter():
    if proc.name() == "powershell.exe":
        proc.kill()

您应该能够使用完全相同的方法杀死 python 进程。 当然:小心! 如果我要在我的机器上执行此操作,我会杀死一些正在为我做重要工作的进程:)

了解如何调用 python 解释器。 我假设它是“python3.exe”或“python.exe”。 在我的机器上它是'python3'。

请注意,您的 python 脚本不会自行终止。 为此,您可以检查杀手脚本的 pid 是什么。 以下示例适用于我。 出于显而易见的原因,我已经用print替换了proc.kill()语句。

import psutil
import os

my_pid = os.getpid()

for proc in psutil.process_iter():
    try:
        # Get process name & pid from process object.
        processName = proc.name()
        processID = proc.pid

        if proc.pid == my_pid:
            print("I am not suicidal")
            continue

        if processName.startswith("python3"): # adapt this line to your needs
            print(f"I will kill {processName}[{processID}] : {''.join(proc.cmdline())})")
            # proc.kill()
    except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess) as e:
        print(e)

Output:

I will kill python3[11205] : python3-cimport time; time.sleep(1000))
I am not suicidal
I will kill python3[15745] : <another python job running on my machine>

只是做time.sleep的Python进程是我为了测试目的提前启动的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM