Форум сайта python.su
Я тут еще подумал. Возможно оптимальнее будет проверять общую нагрузку перед тем как начинать перебирать процессы. Потому что если на хосте все в порядке, то этот перебор уже смысла не имеет.
Офлайн
Логично…, переделаю…спасибо
Офлайн
Интересно, какой в основном процессор нагружается первым в списке, заметил что первый, наверно его и буду мониторить…хотя сегодня на работе тоже двухядерный сегодня проверял , там нагружается в основном второй по списку…
''' 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)
Офлайн