2013-08-13 4 views
1

Есть ли способ контролировать количество вычислительной мощности, используемой в программе на Python? Моя цель - убить программу, если кто-то использует слишком много энергии при подключении к моему серверу в случае злонамеренных намерений.Обработка мощности в Python

+0

Вы хотите, чтобы ваша программа Python контролировала использование собственного процессора? Или вы хотите контролировать использование ЦП других программ? – abarnert

+3

Вы уверены, что это то, что вы хотите? Это не остановит что-то вроде, скажем, [вилочной бомбы] (https://en.wikipedia.org/wiki/Fork_bomb). Как вы собираетесь решать, является ли что-то вредоносным или просто самым интенсивным для процессора процессом на данный момент? – user2357112

+3

Кроме того, почти каждая система имеет встроенные способы ограничения процессов. В Windows это довольно сложно (и часто скрывается в версиях, отличных от сервера, и отличается от версии к версии); на большинстве систем * nix это может быть так же просто, как вызвать 'ulimit' из оболочки перед запуском интерпретатора Python. – abarnert

ответ

0

чрезвычайно удобен для мониторинга процессов и использования процессора.

2

psutil

>>> for x in range(3): 
...  psutil.cpu_percent(interval=1, percpu=True) 
... 
[4.0, 6.9] 
[7.0, 8.5] 
[1.2, 9.0] 
4

Даже если psutil предоставляет информацию на уровне операционной системы в относительно ОС-независимым способом, иногда это лучше указывается непосредственно взаимодействовать с локальной ОС. Выполнение этого на уровне API можно считать слишком сложным и сложным для отладки. Если это так, то некоторые полезные альтернативы в случае Windows, являются:

wmic process list full 

и

wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime 

Это ближайший эквивалент для Windows для * NIX более известен ps.

Предложение состоит в том, чтобы «вскрыть» их и вывести их вывод обратно для анализа. Я понимаю, что по крайней мере первый (wmic process) поддерживает непрерывный режим.

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