2012-01-23 2 views
4

Я знаю, что правильный способ убить подкласс Thread - периодически проверять, если какой-либо флаг (например, self.running) установлен на определенное значение «kill», но у меня есть Thread, который может зависать в ожидании ввода, и я хотел бы его убить в любом случае из внешнего процесса.Убить нить из другого процесса

Любая помощь?

+0

дубликат на http://stackoverflow.com/questions/323972/is-there-any-way-to-kill-a-thread-in-python – alf

+1

о, * другой процесс ... * Как правило, , процесс не может попасть в внутренние процессы другого процесса (если, конечно, это не 'gdb'). Я либо отказался (предпочтительный вариант), либо использовал интерфейсы отладки. – alf

+6

Это довольно легко сделать, если вы не возражаете против того, чтобы весь процесс был убит одновременно. –

ответ

1

Если вы хотите переключиться с модуля поточной передачи на модуль многопроцессорности для интерфейса потока, это возможно. Все, что нужно сделать, - отслеживать PID каждого потока/процесса, который запускается.

from multiprocessing import Process 
    import os,time 

    class myThread(Process): 
     def __init__(self): 
      Process.__init__(self) 

     def run(self): 
      while True: 
       os.system("sleep 5") 


    if __name__ == '__main__': 
     p = myThread() 
     p.start() 
     print "Main thread PID:",os.getpid() 
     print "Launched process PID:",p.pid 
     os.kill(p.pid,1) 
     p.join() 
Смежные вопросы