2015-10-29 2 views
0

Я могу получить текущие сведения об использовании процессора, используя следующий код
как получить использование центрального процессора в последние 10 минут в питона

import psutil as PSUTIL 
PSUTIL.cpu_percent(interval=1) 

Мой вопрос; как я могу получить последние 10 минут использования cpu?

+0

Не думайте, что это будет возможно, ИМО. Вы можете записать его в течение десяти минут, хотя в цикле с таймером, а затем построить его. – ajsp

ответ

1

Запуск сценария питона в фоновом режиме, используя cronjob
1) Откройте терминал и введите кронтаб -e
2) Отредактируйте файл и записать следующий код для запуска сценария питона в фоновом режиме

*/1 * * * * python /yourpath/yourpythonfile.py 

3) Создайте файл yourpython.ру и написать следующий код

import psutil as PSUTIL 
    with open('/yourpath/yourfile.txt', "a") as myfile: 
     myfile.write(str(PSUTIL.cpu_percent(interval=1))+"%"'\n') 
0

Для измерения использования ЦП вам необходимо сравнить использование в течение двух заданных периодов времени; вы не можете получить точку измерения из прошлого (за исключением случаев, когда вы ее сохраняете, как предлагалось @ajsp).

Например:

import psutil 
import time 

def calculate(t1, t2): 
    # from psutil.cpu_percent() 
    # see: https://github.com/giampaolo/psutil/blob/master/psutil/__init__.py 
    t1_all = sum(t1) 
    t1_busy = t1_all - t1.idle 
    t2_all = sum(t2) 
    t2_busy = t2_all - t2.idle 
    if t2_busy <= t1_busy: 
     return 0.0 
    busy_delta = t2_busy - t1_busy 
    all_delta = t2_all - t1_all 
    busy_perc = (busy_delta/all_delta) * 100 
    return round(busy_perc, 1) 

cpu_time_a = (time.time(), psutil.cpu_times()) 
# your code taking time 
cpu_time_b = (time.time(), psutil.cpu_times()) 
print 'CPU used in %d seconds: %s' % (
    cpu_time_b[0] - cpu_time_a[0], 
    calculate(cpu_time_a[1], cpu_time_b[1]) 
) 

Или вы могли бы использовать cpu_percent(interval=600); и если вы не хотите, чтобы он блокировал другой код в вашем скрипте, вы можете сделать это в отдельном thread.

Но, как сказано ранее, в обоих случаях это не будет возвращаться во времени; просто измерьте время процессора с этого момента до interval.

Если вам просто нужно следить за использование процессора и не хотите изобретать велосипед, вы можете использовать:

Эти решения помогут вам сохранить показатели вашей системы для обработки.

1

Идея заключается в следующем:

  1. Сделать фоновую задачу с помощью threading модуля или системы обслуживания/демона. Что-то, что работает параллельно с вашим основным кодом;
  2. Создайте таймер в фоновом задании. На каждом таймере отметьте запрос на использование процессора и запишите его в массив.
  3. Когда основной код необходим CPU статистику нагрузки, передать его от фоновой задачи по IPC, files и т.д.

Точное решение зависит от того, какие инструменты вы можете использовать.

0

Вы можете использовать os.getloadavg() найти среднюю нагрузку на сервер в течение прошлого 1, 5 & 15 минут.

Возможно, это окажется полезным для того, что вы намереваетесь сделать.

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

  • Нет связанных вопросов^_^