【问题标题】:Python - kill multiple processes in a functionPython - 在一个函数中杀死多个进程
【发布时间】:2018-09-06 16:48:03
【问题描述】:

我是 python 新手,并且有以下代码可以杀死进程, 但它并不优雅。 我必须在多行上定义流程并对其进行搜索。

我正在寻找创建一个函数或一种方法来分配我添加到此列表中的任何进程,并在不查找每个进程的情况下杀死所有进程。 (这似乎是多余的)

类似于将我添加的任何新 PROCESS 分配到方法 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()

【问题讨论】:

    标签: python process kill psutil


    【解决方案1】:

    使用一组名称,然后您可以使用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'}
    

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

    【讨论】:

    • 嗨,乔,谢谢,这很快!正是我想要的。不确定我是否完全理解第二部分,但希望有一天会很快。 (我赞成 fyi,但我是新的,所以它没有显示)
    • @montystack 阅读this 以更好地理解第二种语法:) 哦,你可以接受确实给我一些代表的答案(即使你没有任何代表):p
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2014-10-22
    • 2018-02-12
    • 1970-01-01
    相关资源
    最近更新 更多