2016-07-09 2 views
-1

Я контролирую конкретный PID с помощью python и пытаюсь выполнить функцию, если этот PID больше не существует, чтобы вывести его снова. Проблема в том, что моя петля, кажется, работает на 1,5 (да, полтора) цикла, а затем ломает ее.while True issue in Python

while True: 
    print "[DEBUG] We are in the loop" 
    query = "Select * from Win32_Process where ProcessId = " + str(monitorPID) 
    if (GetObject('winmgmts:').ExecQuery(query).count == 0): 
     RunTheProgramAgain() 
    print "[DEBUG] Current PID is %d - ProcNAME is %s" % (monitorPID, procName) 
    time.sleep(5) 

Он будет повторно запустить программу с успехом, она обновит PID программы, а также, но когда второй цикл происходит, он ломает без причины, до последней отладки печати. Любая помощь будет оценена по достоинству.

+1

Показать, что 'RunTheProgramAgain()' и 'ExecQuery()' do. – Will

+0

Вам не хватает еще одного закрывающего пара? Также согласитесь с Волей. Вам нужно больше показать свой код. – Malcriado415

+0

@JulienBernu мой код отформатирован, отступы правы. – CDoc

ответ

1

Попробуйте обернуть свой код в блок try и посмотреть, не возникает ли какое-либо исключение.

 
while True: 
    try: 
     print "[DEBUG] We are in the loop" 
     if (GetObject('winmgmts:').ExecQuery("Select * from Win32_Process where ProcessId = " + str(monitorPID)).count == 0): 
      RunTheProgramAgain() 
     print "[DEBUG] Current PID is %d - ProcNAME is %s" % (monitorPID, procName) 
     time.sleep(5) 
    except Exception as e: 
     print e 
     pass