Как я могу убить фон python процессов? - PullRequest
2 голосов
/ 11 апреля 2020

Мне нужен синтаксис python, который выдаст мне список фоновых процессов, выполняющихся через сам python, и уничтожит все эти процессы одновременно. Какую модификацию я должен сделать в моем следующем коде?

Я написал этот код, чтобы получить все запущенные процессы и уничтожить указанный c один по его имени.

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()

1 Ответ

0 голосов
/ 11 апреля 2020

Вы должны быть в состоянии уничтожить python процессов с точно таким же подходом. Конечно: Будьте осторожны! Если бы я делал это на своей машине, я бы убил некоторые процессы, которые выполняют для меня важную работу:)

Узнайте, каков ваш интерпретатор python называется. Я предполагаю, что это «python3 .exe» или «python .exe». На моей машине это 'python3'.

Будьте осторожны, чтобы ваш python скрипт не покончил с собой. Для этого вы можете проверить, что это за сценарий убийцы. Следующий пример работает для меня. Я заменил оператор proc.kill() на print по понятным причинам.

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>

Процесс Python, который просто time.sleep был запущен мной для тестирования заранее.

...