Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 28, 2013 09:51:49

Soteric
От:
Зарегистрирован: 2010-09-19
Сообщения: 352
Репутация: +  20  -
Профиль   Отправить e-mail  

Процесс, нагрузка на ЦП

Я тут еще подумал. Возможно оптимальнее будет проверять общую нагрузку перед тем как начинать перебирать процессы. Потому что если на хосте все в порядке, то этот перебор уже смысла не имеет.



Офлайн

#2 Окт. 28, 2013 15:52:20

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Процесс, нагрузка на ЦП

Логично…, переделаю…спасибо

Офлайн

#3 Окт. 28, 2013 19:31:36

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Процесс, нагрузка на ЦП

Интересно, какой в основном процессор нагружается первым в списке, заметил что первый, наверно его и буду мониторить…хотя сегодня на работе тоже двухядерный сегодня проверял , там нагружается в основном второй по списку…

'''
config.ini
[connect]
process = iron.exe
cpu = 75
'''
import time
import psutil
import win32com.client
import subprocess
wmi=win32com.client.GetObject('winmgmts:')
def loadConfig():
    import ConfigParser
    config = ConfigParser.ConfigParser()
    config.read('config.ini')
    process = config.get('connect', 'process')
    cpu = config.get('connect', 'cpu')
    return {'process':process,'cpu':cpu}
config = loadConfig()
print config['process']
proc_n = config['process']
numb = int(config['cpu'])
while True:
    cp = psutil.cpu_percent(interval=1, percpu=True)
    print cp
    if cp[0] > numb or cp[1] > numb:
        for p in wmi.InstancesOf('win32_process'):
            try:
                res = p.Properties_('ProcessId')
                f = psutil.Process(int(res))
                if p.Name == proc_n:
                    print  p.Name,res , f.get_cpu_percent()
                    if f.get_cpu_percent() > numb:
                        time.sleep(2)
                        if f.get_cpu_percent() > numb:
                            subprocess.Popen('taskkill /PID %d /T /f' % int(res), shell = True)
                #print p.Name, p.Properties_('ProcessId')
            except Exception as e:
                print e.message
    

Отредактировано sanodin (Окт. 29, 2013 16:11:35)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version