Python-杀死一个函数中的多个进程

时间:2018-09-06 16:48:03

标签: python process kill psutil

我是python的新手,可以使用以下代码来杀死进程, 但这并不优雅。  我必须定义过程并在多行中进行搜索。

我希望创建一个函数或一种方法来分配添加到此列表的任何进程,并在不寻找每个进程的情况下将其全部杀死。 (似乎多余)

类似于分配我添加的任何新过程,将其放入方法ALL_PROC中,然后for循环可以对其进行迭代,查找ALL_PROC中包含的所有过程

对不起,如果这很明显,这是我的第一个堆栈问题:)

Process1 = "pro1.exe"
Process2 = "pro2.exe"
Process3 = "pro3.exe"

for proc in psutil.process_iter():  
    if proc.name() == Process1:
       proc.kill()
    if proc.name() == Process2:
       proc.kill()
    if proc.name() == Process3:
       proc.kill()

1 个答案:

答案 0 :(得分:0)

使用一组名称,然后可以使用in运算符检查状态:

processes = {'pro1.exe', 'pro2.exe', 'pro3.exe'}
for proc in psutil.process_iter():  
    if proc.name() in processes:
       proc.kill()

如果您想定义一组前n 'pro[n].exe'个字符串,则可以将生成器表达式与set()构造函数一起使用:

processes = set(f'pro{i}.exe' for i in range(1,n))

其中,例如n = 10,给出:

{'pro6.exe', 'pro8.exe', 'pro9.exe', 'pro2.exe', 'pro4.exe', 'pro3.exe', 'pro1.exe', 'pro7.exe', 'pro5.exe'}

请注意,集合没有顺序,因为它没有索引的概念。