如何杀死后台python进程



我想要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)

输出:

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进程是我提前出于测试目的启动的。

最新更新