Как получить текущее использование процессора, графического процессора и оперативной памяти для конкретной программы в Python?

Я написал программу на Python для обнаружения лиц видеовхода (веб-камеры) с использованием каскада Хаара. Я хотел бы знать, сколько ЦП, ГП и ОЗУ используется этой конкретной программой, а не общее использование ЦП, ГП и ОЗУ.

Я наткнулся на пакет psutil (https://pypi.org/project/psutil/), который позволяет для профилирования используемых системных ресурсов, но мне не удалось получить системные ресурсы, используемые конкретной программой. Как я могу этого добиться?

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

Мой код Python выглядит следующим образом:

def main():
    #Get current Process ID
    pid = os.getpid()
    #Get resources used by current process
    p = psutil.Process(pid)
    with p.oneshot():
        cpu_percent = p.cpu_percent()
        # Get Memory and GPU usage of this PID as well

person TheCoder    schedule 17.06.2018    source источник
comment
Это на какой ОС? Вы проверили информацию о каждом процессе, которую psutil предоставляет вам?   -  person Martijn Pieters    schedule 17.06.2018
comment
В настоящее время я использую MacOS, но буду импортировать программу в Linux во встроенной системе.   -  person TheCoder    schedule 17.06.2018
comment
Получение информации об использовании графического процессора в Linux полностью связано с инструментами командной строки для каждого поставщика, psutil не поддерживает это. Остальное доступно через psutil.Process.   -  person Martijn Pieters    schedule 17.06.2018
comment
Лучше всего начать с 26.4. Профилировщики Python в руководстве.   -  person jww    schedule 17.06.2018
comment
Вы можете найти PID и посмотреть в мониторе активности, так как вы находитесь на Mac   -  person whackamadoodle3000    schedule 17.06.2018
comment
Но, используя информацию о каждом процессе (psutil.Process()), я могу получить только процессор, а не использование графического процессора или ОЗУ, или я что-то упустил? по крайней мере, я не мог найти его в документации?   -  person TheCoder    schedule 17.06.2018
comment
Как я уже говорил: Получение информации об использовании графического процессора в Linux полностью связано с инструментами командной строки каждого поставщика, psutil не поддерживает это.   -  person Martijn Pieters    schedule 17.06.2018


Ответы (1)


Вы можете получить метрики CPU/RAM (не GPU) для конкретного процесса, учитывая его PID:

import psutil
psutil.Process(1234).cpu_percent()
psutil.Process(1234).memory_info()
person Giampaolo Rodolà    schedule 19.06.2018