2014-09-29 2 views
0

Я не могу установить какие-либо модули на какой-либо коробке, поэтому - я не могу использовать psutil.Получить CPU% от заданного PID без psutil

Необходимо получить% от использования ЦП с помощью данного PID.

Одно решение, которое я вижу - использовать subprocess, но это выглядит ужасно:

# CPU usage 
cpu_percentage = subprocess.call("top -p 25393 -b -n 1 | grep -w java | awk '{print $9}'", shell=True, stdout=devnull) 
print('\nCPU percentage usage by Java: %s%%' % cpu_percentage) 

Кроме того, такой путь - я не могу выяснить, как передать переменную, а не PID непосредственно (25393 в этом Примеру) ,

+1

вы могли бы попробовать, глядя через источник psutil, чтобы посмотреть, как это делается? –

+1

Знаете ли вы, что вы можете напрямую устанавливать модули в «пользовательские пакеты» для каждого пользователя, что делает * not * требуемыми правами администратора? Просто используйте 'easy_install --user' вместо' easy_install' ('pip' также имеет опцию' --user'). – Bakuriu

+0

@JamesKent Я думал об этом, но надеюсь, что есть лучшее решение ... – setevoy

ответ

1

Чтобы передать переменную в строку вы можете отформатировать его так же, как вы делали на линии 3:

# CPU usage 

# +Apply here: 
cpu_percentage = subprocess.call("top -p %d -b -n 1 | grep -w java | awk '{print $9}'" % PID, shell=True, stdout=devnull) 

# +like you did here: 
print('\nCPU percentage usage by Java: %s%%' % cpu_percentage) 

PID должен быть int экземпляр для того чтобы эта работа

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