2014-08-07 3 views
0

Я использую psutil, чтобы узнать, когда процесс запущен.Попытка найти, жив ли процесс в Python

До сих пор у меня есть этот код:

PROCESS_NAME = 'python.exe' 
for p in psutil.process_iter(): 
    if p.name == PROCESS_NAME: 
    print("It's alive!") 
    break 

Однако, это не похоже на работу.

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

Если я не буду четко недопонимание, как работает process_iter() ....

+1

* "Это не похоже на работу" * как именно? – NPE

+0

Он не печатает и не тормозит. И так как он не будет делать ни того, ни другого, то, если это явно ложно. Но, как я уже сказал, везде, где я вижу, этот код должен работать нормально. –

+1

Тогда он, вероятно, работает нормально, и нет процесса, для которого 'p.name ==" PROCESS_NAME "'. Добавьте 'else: print p.name' в ваш' if: '. Сортируйте результаты и посмотрите, есть ли один из процессов, о которых вы заботитесь. Посмотрите, как его зовут. –

ответ

1

Bad Python Синтаксис:

Эта линия является неправильным:

if p.name == "PROCESS_NAME": # BAD 

Это выглядит для процесса, название которого буквально «PROCESS_NAME». Вместо этого, вы хотите посмотреть на процесс, имя которого совпадает с именем, на которое ссылается переменная process_name, например, так:

if p.name == PROCESS_NAME:  # GOOD 

Правая сторона первой строки является строка символов. Правая часть второй - это имя переменной.

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

if p.name == "python.exe":  # ALSO GOOD 

Нового PSUTIL API:

Между версии 1.2.1 и версии 2 от psutil, они изменили api. В версии 1 p.name - это имя процесса. В версии 2 p.name - это функция, которая возвращает строку, которая является именем процесса.

Итак, попробуйте следующее:

if p.name() == PROCESS_NAME: 
+0

Вы не представляете, насколько я хочу, чтобы это сработало. Вот буквально скриншот кода: http://i.imgur.com/wFxn26e.jpg –

+0

Это скриншот выхода. Где код? –

+0

...внизу справа. –

Смежные вопросы