2012-01-23 162 views
4

我知道杀死线程子类的正确方法是定期检查某个标记(如self.running)是否设置为某个“kill”值,但我有一个可能会挂起的线程等待输入,我想从外部进程中杀死它。杀死另一个进程的线程

任何帮助?

+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()