Мониторинг процесса в Python? - PullRequest
4 голосов
/ 09 июля 2010

Я думаю, что это довольно простой вопрос, но здесь, в любом случае, он есть.

Мне нужно написать скрипт на python, который проверяет, запущен ли процесс, скажем, notepad.exe. Если процесс запущен, ничего не делайте. Если это не так, начните. Как бы это было сделано.

Я использую Python 2.6 в Windows XP

Ответы [ 3 ]

15 голосов
/ 09 июля 2010

Функции создания процесса модуля os, по-видимому, устарели в Python 2.6 и более поздних версиях, причем модуль subprocess является предпочтительным модулем, поэтому ...

if 'notepad.exe' not in subprocess.Popen('tasklist', stdout=subprocess.PIPE).communicate()[0]:
    subprocess.Popen('notepad.exe')

Обратите внимание, что в Python 3 проверяемая строка должна быть байтовым объектом, поэтому это будет

if b'notepad.exe' not in [blah]:
    subprocess.Popen('notepad.exe')

(имя файла / процесса для запуска не нужнобыть байтовым объектом.)

4 голосов
/ 09 июля 2010

Есть несколько вариантов,

1: более грубым, но очевидным было бы выполнить некоторую обработку текста:

os.popen('tasklist').read()

2: Более сложный вариант - использовать pywin32 и исследовать API-интерфейсы win32, чтобы выяснить, какие процессы запущены.

3: WMI (я только что нашел это ), а - это пример vbscript того, как запрашивать у компьютера процессы через WMI.

3 голосов
/ 20 ноября 2010
...