Python - убить несколько процессов в функции - PullRequest
0 голосов
/ 06 сентября 2018

Я новичок в 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()

1 Ответ

0 голосов
/ 06 сентября 2018

Используйте набор имен, затем вы можете проверить присутствие с помощью оператора 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'}

обратите внимание, что в наборе нет порядка, поскольку он не имеет понятия индексов.

...