2015-10-09 6 views
2

Если я используюКак уменьшить использование ЦП в Windows?

import os 
os.nice(10) 

Ошибка

AttributeError: 'module' object has no attribute 'nice' 

nice это возможно только для систем Linux, так как я снижающих ресурсы процессора, доступные в моей программе?

Он проверяет, работает ли какой-либо конкретный процесс, а если нет, то он выполняет его.

Мой код выглядит следующим образом:

import subprocess, psutil 

proc = subprocess.Popen(['flux']) 
pid = proc.pid 
while 1: 
    if not psutil.pid_exists(pid): 
     proc = subprocess.Popen(['flux']) 
     pid = proc.pid 

Я хотел бы, чтобы использовать минимальные возможные ресурсы.

+0

В бесконечном цикле вы можете time.sleep() – matcheek

+0

Или вызовите 'proc.wait' вместо постоянной проверки PID. –

+0

@ColonelThirtyTwo Не могли бы вы показать пример? – anukul

ответ

2

Вы - занят; этот цикл будет выполняться как можно быстрее. Хороший процесс (даже если этот API существовал в Windows) не помог бы. Это просто позволит другим процессам идти первым, если они захотят использовать CPU, но ваша программа все равно будет поглощать все оставшиеся циклы.

Простой способ исправить это, чтобы спать немного между проверками:

import time 

... 

while 1: 
    time.sleep(1) 
    if not psutil.pid_exists(pid): 
     proc = subprocess.Popen(['flux']) 
     pid = proc.pid 

Но лучший способ это просто блокировать, пока программа не завершится. Вы можете сделать это следующим образом:

import subprocess 

while True: 
    subprocess.call(['flux']) 

С subprocess.call блоков до процесса выходов, ваш код не будет тратить любые циклы в течение этого времени.

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

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