2013-09-02 2 views
1

Есть ли способ однозначно идентифицировать процессы python, запущенные в Windows 7?Идентификация процессов python

Я пишу установщик, который должен убить процесс python для продолжения установки, проблема в том, что выполняется несколько процессов python, и мне нужно убедиться, что я убил правильный!

+0

Не могли бы вы изменить код этого процесса python, который хотите убить? – kennytm

+0

см. Это http://stackoverflow.com/questions/12554176/how-to-get-all-running-python-processes-under-windows-in-an-acceptable-time или это: http://stackoverflow.com/questions/16326529/python-get-process-names-cpu-mem-usage-and-peak-mem-use-in-windows – dzada

+0

Мне нужно убить конкретный процесс python, поскольку установщик обновляет этот процесс. Выполняется несколько процессов python ('pythonw.exe'). – jossgray

ответ

2

Предположив вы знаете командной строки программа была вызвана с в первый раз, это может быть что-то вроде этого:

for p in psutil.get_process_list(): 
    if p.cmdline[0].endswith('pythonw.exe') and p.cmdline[1] == 'myscript.py': 
    print p.pid 

Будьте осторожны при перемещении cmdlines различных программ, хотя, они имеют разное количество элементов и не может быть надежно распакована (хотя я думаю, что python 3 имеет некоторую поддержку для распаковки последовательности переменной длины). Во всяком случае, стоит попробовать.

+1

'len (p.cmdline)' будет возвращать количество элементов в списке в любой версии Python. – jfs

+1

Определенно, я просто предупреждал вас о «prog, arg = p.cmdline' вслепую. –

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