2015-05-15 3 views
2

Я пытаюсь убить процесс на Python, который запускается из другого процесса, и я не могу найти нужное место для размещения моего «.terminate()», ,Убив процесс, запущенный из процесса, который закончился - Python

Чтобы объяснить себя лучше я буду публиковать некоторые примеры кода:

from multiprocessing import Process 
import time 

def function(): 
    print "Here is where I am creating the function I need to kill" 
    ProcessToKill = Process(target = killMe) 
    ProcessToKill.start() 

def killMe(): 
    while True: 
     print "kill me" 
     time.sleep(0.5) 

if __name__ == '__main__': 
    Process1 = Process(target = function) 
    Process1.start() 

Мой вопрос, где можно разместить ProcessToKill.terminate(), в идеале, без необходимости вносить изменения в общую структуру кода?

ответ

2

Вы можете держать на ProcessToKill объекта, так что вы можете убить его позже:

from multiprocessing import Process 
import time 

def function(): 
    print "Here is where I am creating the function I need to kill" 
    ProcessToKill = Process(target = killMe) 
    ProcessToKill.start() 
    return ProcessToKill 

def killMe(): 
    while True: 
     print "kill me" 
     time.sleep(0.5) 

if __name__ == '__main__': 
    Process1 = function() 
    time.sleep(5) 
    Process1.terminate() 

Вот, я удалил свое обертывание function в другом Process объекте, так как для примера, кажется излишним, но вы должны быть в состоянии сделать то же самое с Process, который запускает еще Process.

+0

Спасибо за быстрый ответ, я пойду проверю его, в случае успеха я пометю это ответ – Aphire

+0

. Я нахожу, что я не могу фактически завершить «процесс», который запускает другой «процесс», поэтому я полагаю, что мой ответ означает что вам, возможно, придется немного изменить структуру кода. Вам действительно нужен «процесс», который запускает другой «процесс»? – wildwilhelm

+0

Просто протестировав его, процесс, который вызвал другой процесс, также сделал много других вещей, но я построил посредниковую функцию, которая назвала бы второй процесс, и он отлично работает, спасибо большое! – Aphire

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