Управление процессами в Windows с использованием Python - PullRequest
4 голосов
/ 18 января 2010

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

Ответы [ 3 ]

7 голосов
/ 18 января 2010

В Windows вы можете использовать WMI:

import win32com.client

def find_process(name):
    objWMIService = win32com.client.Dispatch("WbemScripting.SWbemLocator")
    objSWbemServices = objWMIService.ConnectServer(".", "root\cimv2")
    colItems = objSWbemServices.ExecQuery(
         "Select * from Win32_Process where Caption = '{0}'".format(name))
    return len(colItems)

print find_process("SciTE.exe")
1 голос
/ 13 мая 2013

Для аналогичных целей я использовал библиотеку psutil . Некоторые подсказки:

  • список процессов с psutil.pids() ( ссылка )
  • проверка информации о процессе с помощью process = psutil.Process(pid) ( ссылка )
  • до process.kill или process.terminate()

Установка в windows - pip выполнит установку из исходного кода (что означает компиляцию), поэтому вы, вероятно, захотите загрузить двоичную установку из https://pypi.python.org/pypi/psutil/#downloads.

1 голос
/ 18 января 2010
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...